我在php 5.2.17中重构一些旧应用并将其转换为UTF-8字符集。应用程序使用gettext,但由于某种原因,gettext返回cp1250中的数据(在win7巫婆捷克国家环境中),即使所有文本现在都是UTF-8和目录文本。我确实尝试从一开始就创建一个全新的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 chache怎么样?但重新启动IIS没有任何效果。
你知道什么是错的吗? 谢谢你的回答。
答案 0 :(得分:1)
我找到了解决方案。第一次在我的生活中我必须使用它(通常我使用的是apache2):
bind_textdomain_codeset($domain, "UTF-8");
在IIS上,即使其他所有内容都已写入并设置为UTF-8 ...
,也必须设置它答案 1 :(得分:0)
您的.po
/ .mo
gettext文件可能正在使用cp1250
字符集。
尝试将其(例如使用POEdit)更改为UTF-8,重新编译.mo
文件并重新启动服务器。
如果这不起作用,请告诉我们您如何计算输出字符集,这可能是相关的。