PHP MySQL中文UTF-8问题

PHP MySQL中文UTF-8问题,php,mysql,encoding,utf-8,cjk,Php,Mysql,Encoding,Utf 8,Cjk,我有一个MySQL表和字段,它们都设置为UTF-8。问题是,以前负责数据库编写的PHP脚本使用了其他编码,不确定它是在脚本本身、MySQL连接还是其他地方。结果是,尽管表和字段设置为UTF-8,但我们看到的是错误的字符,而不是中文字符。 看起来是这样的: 现在,由于某种原因,以前的脚本(负责写入和破坏数据)可以很好地读取数据,但我的新脚本(全部用UTF-8编码)显示了类似½的字符。如何解决这个问题呢?听上去,您有一个utf8列,但您正在使用拉丁连接向它写入和读取,因此表中实际存储的内容是错误编

我有一个MySQL表和字段,它们都设置为UTF-8。问题是,以前负责数据库编写的PHP脚本使用了其他编码,不确定它是在脚本本身、MySQL连接还是其他地方。结果是,尽管表和字段设置为UTF-8,但我们看到的是错误的字符,而不是中文字符。 看起来是这样的:


现在,由于某种原因,以前的脚本(负责写入和破坏数据)可以很好地读取数据,但我的新脚本(全部用UTF-8编码)显示了类似½的字符。如何解决这个问题呢?

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

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

Hm,您是否尝试读取数据并使用函数进行检查?试试看,也许你能找到什么是原始编码。嗯,是的,玩了一点,但我认为现在问题解决了,只是添加了mysql查询,并使用
设置名称拉丁1
,看起来还可以。