get显示不同语言的浏览器输出错误

时间:2012-11-24 11:05:42

标签: php character-encoding fgets

我使用fgets从my_file.php文件获取内容my_file.php中的内容使用cz语言

"Overte svuj úcet";

但在获得print_r浏览器后显示

"Ověřte svůj úÄet"

但如果我回应“Overtesvujúcet”;浏览器显示正确的输出

"Overte svuj úcet";

实际上我想为不同的语言生成 csv 文件,虽然我设置charset='utf-8'但没有成功我也用Google搜索但找不到解决方案。

2 个答案:

答案 0 :(得分:2)

您所拥有的是简单的编码不匹配。数据在编码A中,但浏览器尝试将其读作编码B. fgets不对编码做任何事情,它只是从文件中读取原始字节,仅此而已。如果您不对数据进行转码,则文本本身没有任何问题。

这只会离开浏览器,而浏览器会错误地解释数据。你应该经常做的是输出一个指定编码的HTTP标头:

header('Content-Type: text/html; charset=utf-8');

您还可以将Web服务器配置为默认输出此标头。您可能将HTML <meta>标记设置为表示UTF-8,但可能在该标记之前输出数据。

无论哪种方式,请确保HTTP标头表示实际数据所在的编码。

答案 1 :(得分:1)

好的,经过长时间的搜索,我发现它,这解决了我的问题

https://github.com/PHPOffice/PHPExcel/downloads