无法显示德语变音符号
Can't display german umlaut
我现在的主要问题是我无法在我的网页上显示“ä, ü, ö”,get 显示为 �,当我用 "echo" 显示我的脚本时,它们看起来很正常,当我 运行 它包含在我的 html 页面 我得到 �.
在我尝试了一些我读过的关于这个主题的东西之后,我找不到解决我的问题的方法。
我正在读取带有 .xls 到 php reader 的 .xls 文件。我从这样的字段中获取数据:
function getMenueMonday($connection) {
$menu = "";
$startrow = 8;
$endrow = 16;
$col1 = 3;
for ($i = $startrow; $i < $endrow; $i++) {
$menu .= $connection->sheets[0]["cells"][$i][$col1] . "<br>";
}
return $menu; }
其中 运行 非常好。
然后我将所有这些 return 值保存在一个数组中。我循环遍历它们以将它们保存到 mysql 数据库中。
for ($i = 0; $i < 5; $i++) {
insertMenue(changeAttr($menues[$i]), $days[$i]);
}
我改字母的方法如下:
function changeAttr($content) {
$search = array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü");
$replace = array("ä", "ö", "ü", "ss", "Ä", "Ö", "Ü");
$contentrep = str_replace($search, $replace, $content);
return $contentrep;
}
在我的数据库 table 中,它们仍然保存为“ä, ö, ü”。
table 本身在 utf8_bin 中。
我在 html 文件的 header 中试过这个:
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<html lang="de">
以及我用来读取数据库的文件中的这个。
header('Content-Type: text/html; charset=utf-8');
使用以下代码我得到了这个输出:
foreach($menues as $r){
echo urlencode($r);
}
"Saisonfr%FCchte" 应该是 "Saisonfrüchte".
有什么地方我错过了字符集或做错了什么吗?
您的连接也必须知道您正在使用的编码,否则会发生一些隐式字符集转换。为此,您可以这样做:
SET NAMES utf8
使用MySQL和PHP时,请参阅this blog post了解常见编码错误的分步说明。
如果每个人都是 "speaking utf-8",则无需使用命名实体引用转义 HTML 中的字符。它甚至可能被认为是不好的做法。
实际上,“ä, ö, ü”之后的所有内容都不会写入数据库...
但是如果数据库中有一个,它就会正确显示。
我现在的主要问题是我无法在我的网页上显示“ä, ü, ö”,get 显示为 �,当我用 "echo" 显示我的脚本时,它们看起来很正常,当我 运行 它包含在我的 html 页面 我得到 �.
在我尝试了一些我读过的关于这个主题的东西之后,我找不到解决我的问题的方法。
我正在读取带有 .xls 到 php reader 的 .xls 文件。我从这样的字段中获取数据:
function getMenueMonday($connection) {
$menu = "";
$startrow = 8;
$endrow = 16;
$col1 = 3;
for ($i = $startrow; $i < $endrow; $i++) {
$menu .= $connection->sheets[0]["cells"][$i][$col1] . "<br>";
}
return $menu; }
其中 运行 非常好。 然后我将所有这些 return 值保存在一个数组中。我循环遍历它们以将它们保存到 mysql 数据库中。
for ($i = 0; $i < 5; $i++) {
insertMenue(changeAttr($menues[$i]), $days[$i]);
}
我改字母的方法如下:
function changeAttr($content) {
$search = array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü");
$replace = array("ä", "ö", "ü", "ss", "Ä", "Ö", "Ü");
$contentrep = str_replace($search, $replace, $content);
return $contentrep;
}
在我的数据库 table 中,它们仍然保存为“ä, ö, ü”。 table 本身在 utf8_bin 中。 我在 html 文件的 header 中试过这个:
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<html lang="de">
以及我用来读取数据库的文件中的这个。
header('Content-Type: text/html; charset=utf-8');
使用以下代码我得到了这个输出:
foreach($menues as $r){
echo urlencode($r);
}
"Saisonfr%FCchte" 应该是 "Saisonfrüchte".
有什么地方我错过了字符集或做错了什么吗?
您的连接也必须知道您正在使用的编码,否则会发生一些隐式字符集转换。为此,您可以这样做:
SET NAMES utf8
使用MySQL和PHP时,请参阅this blog post了解常见编码错误的分步说明。
如果每个人都是 "speaking utf-8",则无需使用命名实体引用转义 HTML 中的字符。它甚至可能被认为是不好的做法。
实际上,“ä, ö, ü”之后的所有内容都不会写入数据库... 但是如果数据库中有一个,它就会正确显示。