【问题标题】:SQL converting column from Latin1 to UTF8SQL 将列从 Latin1 转换为 UTF8
【发布时间】:2015-04-09 19:48:52
【问题描述】:

我正在尝试将我的数据库中表中的特定列从使用排序规则 latin1_swedish_ci 的 latin1 字符集转换为使用排序规则 utf8_unicode_ci 的 utf8。

COLUMN:描述,类型:longtext,默认不为空

我在列上尝试了以下命令:

ALTER TABLE sample MODIFY description LONGBLOB NOT NULL ;

ALTER TABLE sample MODIFY description LONGTEXT CHARACTER SET utf8 NOT NULL COLLATE utf8_unicode_ci;

我还尝试在不先更改为二进制的情况下更改编码。但是这些字符最终被服务器错误地重新编码。

并且不断收到有关某些字符的错误:

错误代码:1366。不正确的字符串值:第 803 行的列“longDesc”的“\x92t hav...”

我的表格中的某些字符似乎没有正确转换。

我该如何解决这个问题?

【问题讨论】:

  • 什么数据库??

标签: mysql utf-8 character-encoding latin collate


【解决方案1】:

\x92 表示您在表现在中有 latin1。第二个 ALTER 声称字节采用 utf8 编码。因此,错误消息。

案例 1:您需要将 LONGTEXT 更改为 utf8,因为您计划添加无法以 latin1 编码的文本行。

对于这种情况,ALTER TABLE sample CONVERT TO CHARACTER SET utf8; -- 转换表中的所有 CHAR/TEXT 列。

ALTER TABLE sample MODIFY description ... CHARACTER SET utf8; -- 转换一列。

案例 2:系统的其余部分正在考虑 utf8 并被此列混淆。

嗯,我不认为这是混淆。根据需要进行转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2013-01-04
    • 2010-11-29
    • 2010-12-04
    • 2012-03-13
    • 1970-01-01
    相关资源
    最近更新 更多