PHP MySQL中文UTF-8问题

时间:2012-03-28 10:17:51

标签: php mysql encoding utf-8 cjk

我有一个MySQL表&全部设置为UTF-8的字段。问题是,以前负责数据库编写的PHP脚本正在使用其他编码,不确定它是在脚本本身,MySQL连接还是其他地方。结果是,虽然表&字段设置为UTF-8,我们看到错误的字符而不是中文。 它看起来像是:

enter image description here

现在,之前的脚本(负责编写和损坏数据)可以出于某种原因读取它,但我的新脚本全部用UTF-8编码,显示类似½©的字符。怎么能修好?

2 个答案:

答案 0 :(得分:0)

听起来,你有一个utf8列,但你正在写它并使用latin1连接从它读取,所以实际存储在表中的是错误编码的。您的问题是,当您使用utf8连接从表中读取时,您会看到实际存储在那里的数据,这就是它看起来错误的原因。您可以通过转换为latin1,然后通过二进制字符集返回到utf8来修复表中的错误编码数据(总共三步)。

答案 1 :(得分:0)

原始数据库采用中文编码 - GB-18030或类似, Latin-1 - 组成这些字符的字节,以UTF-8显示时,显示为一堆拉丁变音符号。读取每个字符串为GB-18030,将其转换为UTF-8,然后保存。