我正在尝试将作为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扩展(但似乎没有比较函数?)到目前为止我没有任何工作。
答案 0 :(得分:4)
utf8_decode
来确保您检查的字符串采用相同的编码。