使用gettext和smarty获取特殊字符时的

时间:2010-08-22 00:58:11

标签: php encoding character-encoding translation gettext

我在gettext中使用$encoding = 'utf-8';,在我的html代码中我设置了<meta charset="utf-8">。我也在我的.po文件中设置了utf-8,但是当我写æøå时我仍然得到了!!什么可能是错的?

2 个答案:

答案 0 :(得分:4)

让我们看看你提到的值是如何在字节级别的。

我从您的问题中复制了æøå,并从您的标题中复制了��的原因是我必须使用Windows控制台应用程序来获取问题的标题,其代码页是Windows 1252(从浏览器复制给了我Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD))。

在以UTF-8编码的脚本中,这给出了:

<?php
$s = 'æøå';
$s2 = '�';

echo "s iso-8859-1 ", @reset(unpack("H*", mb_convert_encoding($s, "ISO-8859-1", "UTF-8"))), "\n";
echo "s2 win-1252  ", @reset(unpack("H*", mb_convert_encoding($s, "WINDOWS-1252", "UTF-8"))), "\n";
s iso-8859-1 e6f8e5
s2 win-1252  e6f8e5

所以字节表示匹配。这里的问题是当你写æøå时:

  • 您使用的是ISO-8859-1,而不是UTF-8。检查文本编辑器。
  • 该值正在从UTF-8转换为ISO-8859-1(不太可能)

答案 1 :(得分:3)

您需要设置此

bind_textdomain_codeset($ domain,“UTF-8”);

否则你会得到 字符