PHP array_key_exists 和 UTF 8

标签 php arrays encoding utf-8 character-encoding

我有一个数据库,其中编码为 UTF-8 用于多语言目的。 我认为我的应用程序中的所有内容都是 UTF-8。

尽管我对 array_key_exists 函数有疑问。

  1. 首先查询数据库

从表中选择名称,值

  1. 然后我用结果填充 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/

相关文章:

php - Drupal 可扩展悬停菜单

java - 从txt文件读取二维数组java扫描仪

javascript - javascript 数组新手,需要一些帮助

arrays - 如何对 JSONB 数组的元素使用 LIKE?

MySQL:字段中的空白字符实际上不是空白。它是什么?

windows - 编码([DrSNX][Мι¢ŕôśőƒŧ ₤ĐС Сзŏţǿćǿł Ðѓїνєґ !!!!!!!!])这是什么?

php - MySQL 三表连接

php - Symfony2 Doctrine2 获取所有表

php - 为 PHP 数组中的每个对象添加属性

c# - 如何在 C# 中将来自网络摄像头的视频编码为 H.264?