使用PHP Gettext编码问题

时间:2013-05-04 17:39:59

标签: php encoding character-encoding gettext

我正在尝试为我的php项目开始使用Gettext。

但是,我有一些编码问题。如果我在.mo文件中使用UTF-8编码并使用 “bind_textdomain_codeset('messages','UTF-8');” 我没有在浏览器中正确看到重音符号。在Firefox中,为了看到它们,我必须将浏览器编码更改为UTF-8(它不是默认编码)。由于我不能指望我的访问者改变他们的浏览器编码,我该怎么办?

我也尝试将所有内容更改为ISO-8859-15,虽然重音符号工作正常(即使使用浏览器默认编码),但是符号不起作用。而且我也读到使用像俄语这样的语言有问题,所以它似乎不是正确的方法。

我该怎么办?

谢谢:)

1 个答案:

答案 0 :(得分:0)

您应该指示浏览器您发送的页面是以UTF-8编码的。在实际输出任何内容之前使用header执行此操作:

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

当然,这假设页面首先是,以UTF-8开头。

一般而言,您永远不会忽视的一条法律是,您网页中的所有内容必须采用相同的编码(这是您在声明内容类型时使用的编码)。

如果内容的所有来源(例如您的硬编码内容,来自gettext的内容,来自数据库的内容)都在该编码中,那么一切都很好。如果没有,那么您必须手动转换来自与页面编码不同的来源的所有内容,这可以通过iconvmb_convert_encoding进行。