gpt4 book ai didi

java - 将 UTF8 文本插入 latin1 列时出现 "Incorrect string value:"MySQL 问题

转载 作者:行者123 更新时间:2023-11-29 03:25:21 25 4
gpt4 key购买 nike

我在生产中有这个 MySQL 表,它的字符集为 latin1_swedish_ci(又名 latin1)。

现在,有一个 UTF-8 格式的传入内容 ( String : "\ud55c\ubc24\uc758") 需要插入到这个名为 keywords 的 TEXT 列字段中 table 。

当我尝试执行 INSERT 时,出现此错误:

Incorrect string value: '\xED\x95\x9C\xEB\xB0\xA4...' for column 'keywords' at row 1

我已经在我的 Java 代码中尝试了各种方法来尝试从 UTF8 转换为 ISO-8859-1,如下所示,但我仍然遇到相同的错误:

String convertedString = new String(originalString.getBytes("UTF-8"), "ISO-8859-1");

我知道 StackOverflow 上有一些解决方案提到将 MySQL 表的字符集从 latin1 更改为 UTF8,但不幸的是我不能这样做,因为这是一个实时生产 MySQL 主服务器,而且它一直在使用 latin1。

有没有人有任何建议来修复这个“不正确的字符串值”错误?

谢谢是

最佳答案

你试图做的事情根本不可能,除非 utf8 字符串中的字符也恰好在 latin1 中有表示...而 latin1 是一个很小的单字节字符集(少于 256 个可能的字符,总计),因此绝大多数有效的 utf8 字符没有等效的 latin1 表示。

您不能在该列的字符集不支持的列中存储任何字符。这不是从一个“转换”到另一个的问题。

如果需要unicode,至少需要一个utf8列,修改表是唯一的选择。尝试不这样做就像试图在无符号整数列中存储一个负数。无符号整数不能为负——这不是转换的问题。

这对于任何支持字符数据类型的 RDBMS 都是如此,而不是特定于 MySQL 的限制。

关于java - 将 UTF8 文本插入 latin1 列时出现 "Incorrect string value:"MySQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com