如何解决错误:#1977 - 无法将 'utf8' 字符 0xD8AD 转换为 'latin1'。
P粉574695215
P粉574695215 2023-07-18 19:47:03
0
1
591

我正在使用phpMyAdmin工作,我的name列中有阿拉伯字符值,例如کلب الرقيّة علی العزیزبوری,我想将它们转换为正确的形式。

我尝试了以下查询,并将表中的大多数记录转换为正确的形式。


ALTER DATABASE alfeker_book CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE guestbook CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4);

我还尝试了其他方法。

UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING binary) USING utf8mb4);

但其中几个保持不变,并显示以下错误。

#1977 - Cannot convert 'utf8' character 0xD8AD to 'latin1'

我还尝试了这个查询。:

SELECT id,name, CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4) AS converted_name FROM guestbook;

这个查询运行良好,完美地显示了未转换的字符。但是当我使用更新查询时,它不起作用。

P粉574695215
P粉574695215

全部回复(1)
P粉460377540

这是阿拉伯文本的乱码或"双重编码"。

有几种方法可以修复数据。只有一种方法可以改善它,其他方法会使情况变得更糟。

你看一下这个UTF-8字符的问题;我看到的不是我存储的内容 并按照其中关于获取数据库中内容的十六进制值的建议进行操作,此外还提供当前模式定义的SHOW CREATE TABLE。还请提供SHOW VARIABLES LIKE 'char%'和连接参数。


在备份各种ALTER和CONVERT之前,请提供十六进制值,我可能会选择正确的转换方法。


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板