我现在的主要问题是我无法在我的网页上显示“ä,ü,ö”,显示为 ,当我用“回声”显示我的脚本时它们看似正常,当我运行它时从我的html页面我得到了 。
在我尝试了几个关于这个主题的内容后,我无法找到解决问题的方法。
我正在使用.xls读取.xls文件到php阅读器。我从以下字段中获取数据:
for ($i = 0; $i < 5; $i++) {
insertMenue(changeAttr($menues[$i]), $days[$i]);
}
哪个运行得很好。 然后我将所有这些返回值保存在一个数组中。我循环使用它们将它们保存到mysql数据库中。
function changeAttr($content) {
$search = array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü");
$replace = array("ä", "ö", "ü", "ss", "Ä", "Ö", "Ü");
$contentrep = str_replace($search, $replace, $content);
return $contentrep;
}
我用来更改字母的方法如下:
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<html lang="de">
在我的数据库表中,它们仍然保存为“ä,ö,ü”。 表格本身位于 utf8_bin 中。 我在html文件的标题中尝试了这个:
header('Content-Type: text/html; charset=utf-8');
以及我在用于读取db的文件中的内容。
foreach($menues as $r){
echo urlencode($r);
}
使用以下代码我得到这个输出:
{{1}}
有没有一点我错过了charset或做了一些特别错误的事情?
答案 0 :(得分:6)
您的连接必须知道您正在使用的编码,否则会发生一些隐式字符集转换。为此,您可以:
SET NAMES utf8
有关使用MySQL和PHP时常见编码错误的逐步说明,请参阅this blog post。
如果每个人都在说utf-8&#34;,则无需使用命名实体引用转义HTML中的字符。它甚至可能被认为是不好的做法。
答案 1 :(得分:0)
那么现在实际上“ä,ö,ü”之后的所有内容都没有写入数据库...... 但如果数据库中有一个,它将正确显示。