使用这个rtf class,我看到我的特殊字符得到了转换,比如é becomes \'C3\'A9 (这部分可能不是问题)
一旦我使用php header在rtf中得到它,结果字符(é)就被视为é。
header("Content-type: application/rtf; charset=utf-8");
header("Content-Disposition: attachment; filename=$file_rtf");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); 奇怪!我的文件是以utf-8格式保存的,仅供参考。
我在获取excel时遇到了类似的问题,但这可以用
$text = mb_convert_encoding($text,'utf-16','utf-8');这对rtf不起作用。谢谢你的帮助。
PS。我的文件是用utf-8编码通过DW保存的,我的mysql默认字符集也是utf-8。当我直接从数据库中显示一个字符时,我没有问题,但只有当我在页面中直接键入一个特殊字符来使用页眉时,才会出现这个问题。
干杯。
发布于 2011-04-17 15:48:35
最后,我用以下命令解决了这个问题:
mb_convert_encoding($text,'ISO-8859-15','utf-8');发布于 2011-04-17 07:59:29
你得到了双重编码。\N{LATIN SMALL LETTER E WITH ACUTE}字符是代码点U+00E9。在UTF-8中,这就是\xC3\xA9。
但是,如果您将这两个字节视为不同的代码点U+00C3和U+00A9,则它们分别是\N{LATIN CAPITAL LETTER A WITH TILDE}和\N{COPYRIGHT SIGN}。
现在,一旦这些字节被重新编码,你就会得到字节序列\xC3\x83\xC2\xA9,这就是你看到的。
您使用的是Windows系统吗?他们似乎经常对事物进行双重重新编码。
发布于 2011-04-17 03:37:15
您应该询问脚本的作者,但从文档和提供的编码来看,它不是UTF8友好的。因此,您可以尝试将文本转换为代码页(例如,cp1251),并使用此类中的一种可用编码来查找最佳结果。
https://stackoverflow.com/questions/5688728
复制相似问题