在php中比较utf8编码的字符串

时间:2011-12-28 19:39:23

标签: php utf-8 internationalization

我正在尝试将作为POST提交的值与内部字符串进行比较。它们都是utf8编码的。这是代码

echo $_POST["province"] . "\n";
setlocale(LC_COLLATE, "fr_CA");
echo strcoll($_POST["province"], "Québec");

此代码回应如下:

Québec
-38
如果字符串匹配,

strcoll应返回0,而不是-38。换句话说,比较失败。如何比较两个与人类读者相同的utf8字符串,但可能编码方式不同?我试过Normalizer:normalize,常见的“==”运算符,查看多字节的php扩展(但似乎没有比较函数?)到目前为止我没有任何工作。

1 个答案:

答案 0 :(得分:4)

  1. 确保将PHP文件保存为UTF-8,这非常重要。
  2. 确保您的HTML表单实际上将UTF-8数据发送到服务器。
  3. 如果您的PHP不使用UTF-8作为内部编码,则可能必须使用utf8_decode来确保您检查的字符串采用相同的编码。