【问题标题】:Comparing utf8 encoded string in php比较php中的utf8编码字符串
【发布时间】:2011-12-28 19:39:23
【问题描述】:

我正在尝试将作为 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 扩展(但似乎没有比较函数??),到目前为止对我来说没有任何效果。

【问题讨论】:

  • 试过strcmp()strcasecmp()?或者也许比较哈希?

标签: php utf-8 internationalization


【解决方案1】:
  1. 确保将 PHP 文件保存为 UTF-8,这很重要。
  2. 确保您的 HTML 表单确实将 UTF-8 数据发送到服务器。
  3. 如果您的 PHP 不使用 UTF-8 作为内部编码,您可能必须使用 utf8_decode 以确保您检查的字符串采用相同的编码。

【讨论】:

  • 谢谢。这是一个保存问题,因为文件以拉丁编码保存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2011-04-07
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多