【问题标题】:Gettext on php/iis/win7, wrong charset在 php/iis/win7 上获取文本,错误的字符集
【发布时间】:2012-04-21 01:46:05
【问题描述】:

我正在重构 php 5.2.17 中的一些旧应用程序并将其转换为 UTF-8 字符集。应用程序使用 gettext,但由于某种原因,即使所有文本现在都是 UTF-8 和目录文本,gettext 也会以 cp1250(在 win7 女巫捷克国家环境中)返回数据。我确实尝试从一开始就在 UTF-8 中创建一个全新的,重新启动 IIS7.5,但仍然得到错误的字符集(不是 UTF-8,而是 cp1250)。 (我是win7新手,新电脑,可能是在某些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没有效果。

你知道哪里出了问题吗? 谢谢你的回答。

【问题讨论】:

    标签: php iis-7.5 gettext


    【解决方案1】:

    我找到了解决方案。第一次在我的生活中我必须使用这个(通常我使用的是 apache2):

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-18
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 2016-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多