我有一个数据库,其中编码为 UTF-8 用于多语言目的。 我认为我的应用程序中的所有内容都是 UTF-8。
尽管我对 array_key_exists 函数有疑问。
- 首先查询数据库
从表中选择名称,值
- 然后我用结果填充 HashMap :
$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 格式保存您的源代码文件,它应该可以工作(请咨询您的文本编辑器)。
关于PHP array_key_exists 和 UTF 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8835964/