法语重音的字符编码

18

我正在为一位法国客户开发我的第一个网站,但是遇到了大量的重音显示为“?”的问题。在搜索了几天后,我以为已经理解了,但问题仍然存在。

为了简化问题,我将仅解释电子邮件标题(该消息包含法语重音符号)。

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

我尝试使用UTF-8和iso-8859-1字符集,但仍然收到此类型的电子邮件:
Merci pour votre intérêt pour les tee shirts. 

有人能帮忙吗?我在使用mySql、HTML、PHP等技术时遇到了问题。

谢谢。


听起来问题出在输入上。你必须知道输入文本的字符集,可能需要进行转换。不过我不确定如何做这两件事。 - crimson_penguin
谢谢。这是正确的方向。 - denislexic
3个回答

24
如果出现了“intérêt”显示成“intérêt”的情况,很可能是UTF-8编码的文本以ISO-8859-1的形式显示(除非因为双重编码而导致数据损坏)。
请确保头文件正确形成,并将内容表示为UTF-8编码。

你可能是对的。我有一个将带重音字符转换为HTML实体,然后在ISO-8859-1中显示内容的函数。我会看一下。 - denislexic
我最后只是在头部加入utf-8并删除了任何编码。现在似乎可以工作了。谢谢。 - denislexic
太棒了!我没有意识到这种特定类型的字符伪影与将UTF-8作为ISO-8859-1发送有关。在Rails 3中,我使用send_data发送带有重音符号的文件。你只需要在:type参数后附加"charset=utf-8"即可。太好了! - Aaron Vegh

6
首先,将标头中的字符集再次设置为UTF8。
在您的页面中,适当使用utf8_encode()确保来自数据库或外部文件的值得到正确编码(尝试设置数据库字段的编码为UTF8)。
此外,请查看htmlentities()函数,将特殊字符解析为HTML实体,这可能也可以解决编码问题。

1

除了法语以外,其他语言对我来说默认都可以正常工作。

在我的/fr/messages.php文件中,我能够通过以下方式解决这个问题

'myKey' => utf8_encode('en français'),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接