【发布时间】:2014-08-09 00:36:37
【问题描述】:
首先,大家好。我对 PHP 和波兰语字符有疑问,即“ą Ą ć Ć ę Ę ł Ł ń Ń ó Ó ś Ś ź Ź ż Ż”。下面是我的示例代码。我在$string 变量中有所有波兰语符号,在$utfString 变量中有它们对应的UTF-8(十六进制)表示。
<?php
header('Content-Type: text/html; charset=utf-8');
$string = 'ą Ą ć Ć ę Ę ł Ł ń Ń ó Ó ś Ś ź Ź ż Ż';
$utfString = "\xC4\x85 \xC4\x84 \xC4\x87 \xC4\x86 ".
"\xC4\x99 \xC4\x98 \xC5\x82 \xC5\x81 ".
"\xC5\x84 \xC5\x83 \xC3\xB3 \xC3\x93 ".
"\xC5\x9B \xC5\x9A \xC5\xBA \xC5\xB9 ".
"\xC5\xBC \xC5\xBB";
echo $string;
var_dump(utf8_encode($string));
echo $utfString;
var_dump(utf8_encode($utfString));
?>
浏览器的响应如下所示:
� � � � � � � � � � � � � � � � � �
string '¹ ¥ æ Æ ê Ê ³ £ ñ Ñ ó Ó ¿ ¯' (length=53)
ą Ą ć Ć ę Ę ł Ł ń Ń ó Ó ś Ś ź Ź ż Ż
string 'Ä Ä Ä Ä Ä Ä Å Å Å Å Ã³ à ŠŠź Ź ż Å»' (length=89)
如您所见,这些字符串的输出不同。我的问题是我能做些什么呢?我正在考虑编写一个函数,将代码中的波兰符号转换为它们各自的 UTF-8 表示,但这似乎远非最佳且相当困难。另一种选择是在我需要波兰符号时使用这种 UTF-8 表示,但话又说回来,我不相信它应该这么难和令人费解。有趣的是,当我从数据库中获取这样一个字符串并显示它时,一切正常。
脚本文件被编码为没有 BOM 的 UTF-8。
【问题讨论】: