我使用PDO MySQL从PHP插入数据。我不知道的是,在进行每个查询之前,我必须使用“SET NAMES'utf8'”语句。
因此,在进行修复( SET NAMES'utf8'命令)之前,所有用简体中文输入的内容都变得类似于“ä¸-å®”。
我使用过PHP mb_detect_encoding ,似乎编码仍然是UTF-8。有没有什么方法可以将这些数据(用户在添加修复程序之前输入的数据)转换为可读的简体中文字符?
以下是一些例子:
(first name ; last name)
"è© æ˜Œæ˜Ž" ; "蔡"
"瑩書" ; "陳"
"培熙" ; "楊"
"培熙" ; "楊"
"立" ; "王"
"光凱" ; "陳"
正如评论中所提到的,问题实际上是双重编码的utf-8,可以使用下面的MySQL语句修复(感谢How to fix double-encoded UTF8 characters (in an utf-8 table)中提供的答案)
UPDATE TABLE_NAME
SET FIELD_NAME = CONVERT(CAST(CONVERT(FIELD_NAME USING latin1) AS BINARY) USING utf8);
我已经更新了这个答案,因为可能有人确实知道'双重编码的utf-8':)