【发布时间】:2011-11-02 00:27:22
【问题描述】:
我知道有一些类似的问题。但是,在阅读了有关该主题的答案和搜索后,我仍然在努力在浏览器中显示俄语字母。我将它们存储在 .csv 文件中(以 UTF-8 编码,无 BOM)。在我的读取 .csv 的 php 文件中(也以 UTF-8 无 BOM 编码)我声明了字符集:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
要打开和遍历 .csv 文件,我使用以下代码:
if(($handle = fopen($path, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
...
}
}
要么什么都没有显示,要么是这样的:
-ам-Зее
而不是
Целль-ам-Зее
还有什么我可以尝试的想法吗?
更新:
将浏览器编码设置为 UTF-8 后,我得到正确的俄语字母。但是,仍然有一些文本根本不显示。我怀疑我在读取 .csv 文件时做错了什么,简化版是:
if(($handle = fopen($path, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
echo $data[1];
}
}
(我省略了第一列并显示第二列的内容,始终填充)
【问题讨论】:
-
在浏览器中尝试查看 > 编码并尝试一些编码来确定您的文本的真正编码。如果它在任何编码中都没有意义,那么您可能在您省略的部分的某个地方对其进行了加扰。
-
@deceze 谢谢,这很有帮助。我完全忘记了更改浏览器编码。但是我仍然遇到问题,一些文本没有加载,我什么也没有得到文本。我会更新我的问题
-
好像文本已经被两次utf8_encoded,你自己试试吧:cafewebmaster.com/online_tools/utf8_encode把Целль-ам-Зее放在文本框中,然后点击编码得到ЦеллÑ-ам-Ðее你在执行 utf8_encode 吗?
-
@corretge 我不是,我使用我发布的代码(我刚刚省略了逻辑)。但是,您是对的,在 utf-8 中编码 Австрия 后,我得到了相同的奇怪字符串。但是我不知道在哪里可以完成。也许在打开保存在 utf-8 中的文件时,嗯..
标签: php unicode utf-8 character-encoding