我有UTF-8 MySql数据库,它从来没有问题,在浏览器内显示的东西 但我面临的问题时,试图将UTF8数据保存到文件(或通过强制下载传输) 。 所有不相关的字符都显示不正确(不管我切换什么编码) 只是fyi:文本的那部分是希伯来语。UTF8正确的文本,但保存不正确
我试过至今并未能:
set names 'utf-8'
- 对字符串的一部分设置
mb_internal_encoding('UTF-8')
utf8_encode
或完全在整个文本- 将
fwrite($f, pack("CCC",0xef,0xbb,0xbf));
(是的,文件被认定为utf8,但符号仍然不正确)
最令人沮丧的事情是浏览器始终正确显示它 任何想法,绅士?
PS:这是我送文件强制下载:
header('Content-Description: File Transfer');
header('Content-Type: application/xml; charset=utf-8');
header('Content-Disposition: attachment; filename=xml_invoices.xml');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . strlen($xml_file));
echo $xml_file; //this string contains latin and non-latin charachters
exit();
你究竟如何测试*它是“保存不正确”?编码需要两方:一个*正确写*,一个正确*读*。 – deceze
以及我只是写入文件,就是这样。至于阅读 - 我在文本编辑器中尝试了几乎所有可能的编码,并且它不显示正确的符号。 (我也测试了windows-1255,这是希伯来语) – Serg
所以你打开文件编辑器中的文件...你是如何确保它正确地读取文件?也许尝试使用十六进制编辑器,并向我们展示原始内容。 – deceze