我有一个数据库,其中编码为 UTF-8 用于多语言目的。
我认为我的应用程序中的所有内容均采用 UTF-8 格式。
虽然我对 array_key_exists 函数有疑问。
- 它从对数据库的查询开始
SELECT name, value from TABLE
- 然后我用结果填充哈希图:
$hashmap[ $row['name'] ] = $row['value']
但是,当数据库中的名称包含像 'é' 这样的重音符号时,以下命令将返回 false :
$this->db->select('name');
$this->db->select('value');
$this->db->from('table');
$q = $this->db->get();
$res = $q->result_array();
foreach ($res as $value) {
$hashmap[$value['name']] = $value['value'];
}
$key = 'name é'; // an ord here returns 233
array_key_exists($key, $hashmap)
我不知道如何进一步解决这个问题,您遇到过这个问题吗?
我有一个性能要求。
感谢您的帮助。
如果数组键确实是来自数据库的 UTF-8 字符串,则它会以 UTF-8 进行编码。显然你的源代码文件不是用 UTF-8 编码的,我猜它是用 Latin-1 编码的。因此,UTF-8 字节序列和 Latin-1 字节序列之间的比较不成功。将源代码文件保存为 UTF-8,它应该可以工作(请咨询您的文本编辑器)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)