首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php to rtf,é变成©

php to rtf,é变成©
EN

Stack Overflow用户
提问于 2011-04-17 02:45:45
回答 4查看 10.9K关注 0票数 4

使用这个rtf class,我看到我的特殊字符得到了转换,比如é becomes \'C3\'A9 (这部分可能不是问题)

一旦我使用php header在rtf中得到它,结果字符(é)就被视为é

代码语言:javascript
复制
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时遇到了类似的问题,但这可以用

代码语言:javascript
复制
$text = mb_convert_encoding($text,'utf-16','utf-8');

这对rtf不起作用。谢谢你的帮助。

PS。我的文件是用utf-8编码通过DW保存的,我的mysql默认字符集也是utf-8。当我直接从数据库中显示一个字符时,我没有问题,但只有当我在页面中直接键入一个特殊字符来使用页眉时,才会出现这个问题。

干杯。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-17 15:48:35

最后,我用以下命令解决了这个问题:

代码语言:javascript
复制
mb_convert_encoding($text,'ISO-8859-15','utf-8');
票数 9
EN

Stack Overflow用户

发布于 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系统吗?他们似乎经常对事物进行双重重新编码。

票数 6
EN

Stack Overflow用户

发布于 2011-04-17 03:37:15

您应该询问脚本的作者,但从文档和提供的编码来看,它不是UTF8友好的。因此,您可以尝试将文本转换为代码页(例如,cp1251),并使用此类中的一种可用编码来查找最佳结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5688728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档