【发布时间】:2012-08-02 16:33:53
【问题描述】:
我正在向服务器查询一些信息(以 JSON 形式返回),尤其是名称列表,其中一个名称返回包含奇怪的字符:
Ðемања МатеÑ~ић
应该是这样的:
Немања Матејић
我尝试了以下方法:
- 从字符串中删除 BOM(字节顺序标记)(否则 PHP 不会解码 JSON),然后使用
json_decode对其进行解码,并直接获取名称并将其插入到我的 UTF8 编码的 MySQL 数据库中。 - 使用带有 UTF8 排序规则的字段。
...无济于事 - 数据库中的值仍然存在缺陷。
如何解决?
编辑:
运行SHOW VARIABLES LIKE '%character%' 返回
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /data/mysql/fuentez/share/mysql/charsets/
可能是因为 character_set_server 是 latin1 吗?
【问题讨论】:
-
数据库内部编码是一回事,但你还需要设置适当的连接编码,你会从那里找到你的方法:stackoverflow.com/questions/2159434/set-names-utf8-in-mysql
-
Немања Матејић 不是俄语,它包含非西里尔字符,如 њ、ј、ћ