php/iis/win7 上的 Gettext,错误的字符集


Gettext on php/iis/win7, wrong charset

我正在重构php 5.2.17中的一些旧应用程序并将其转换为UTF-8字符集。应用程序使用 gettext,但由于某种原因,gettext 在 cp1250(在 win7 女巫捷克国家环境中)中返回数据,即使所有文本现在都是 UTF-8 和编目文本。我确实尝试从一开始就在 UTF-8 中创建一个全新的,重新启动 IIS7.5,但仍然得到错误的字符集(不是 UTF-8,而是 cp1250)。(我是win7的新手,在新PC上,也许是在某些php配置中,mbstring和iconv已将UTF-8设置为内部编码)

编辑:这是我的 .po 文件的标题。我每次都再次生成 .mo:

"MIME-Version: 1.0'n"
"Content-Type: text/plain; charset=UTF-8'n"
"Content-Transfer-Encoding: 8bit'n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop'n"
"X-Poedit-Basepath: ../../../'n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;'n"
"X-Poedit-Language: Czech'n"
"X-Poedit-Country: CZECH REPUBLIC'n"
"X-Poedit-SourceCharset: utf-8'n"
"X-Poedit-SearchPath-0: .'n"

所有代码和 html 标头现在都是 utf-8。那任何 IIS 查切呢?但是重新启动IIS没有任何影响。

你知道可能出了什么问题吗?谢谢你的回答。

我找到了解决方案。我第一次必须使用它(通常我使用的是 apache2):

bind_textdomain_codeset($domain, "UTF-8");

在 IIS 上,即使其他所有内容都已写入并设置为 UTF-8,也必须对其进行设置...

您的.po/.mo gettext 文件可能使用的是 cp1250 字符集。

尝试将其(例如使用POEdit)更改为UTF-8,重新编译.mo文件并重新启动服务器。

如果这不起作用,请告诉我们您如何确定输出字符集,这可能是相关的。