当前位置: 首页 > 知识库问答 >
问题:

如何将latin1_swedish_ci数据转换为UTF8_GENERAL_CI?

仲孙绍元
2023-03-14

我有一个MySQL数据库,其中所有的表字段排序规则为

latin1_swedish_ci

它已经存储了将近1000个记录,现在我想把所有这些数据转换成

utf8_general_ci

以便我可以显示任何语言内容。我已经将字段排序规则修改为utf8_general_ci,但这并不能将所有旧记录转换为utf8_general_ci

共有2个答案

郏经纬
2023-03-14

导出表。放下桌子。在编辑器中打开导出文件。在创建表结构的地方手动编辑它。

旧查询:

CREATE TABLE `message` (
  `message_id` int(11) NOT NULL,
  `message_thread_id` int(11) NOT NULL,
  `message_from` int(11) NOT NULL,
  `message_to` int(11) NOT NULL,
  `message_text` longtext NOT NULL,
  `message_time` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

新查询:(假设要更改message_text字段。)

CREATE TABLE `message` (
  `message_id` int(11) NOT NULL,
  `message_thread_id` int(11) NOT NULL,
  `message_from` int(11) NOT NULL,
  `message_to` int(11) NOT NULL,
  `message_text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `message_time` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

保存文件并导入回数据库。

长孙鸿
2023-03-14

一件有趣的事。

如果表中的字符集编码正确,则Anshu建议的转换为字符集和CONVERT()/cast()将很好地工作。

如果由于某种原因,latin1列包含utf8文本,CONVERT()和CAST()将无法提供帮助。我已经把数据库与设置“搞乱”了,所以要花更多的时间来解决这个问题。

除了字符集转换之外,要解决这个问题还需要几个练习。

  1. “难点”是从将通过控制台转换的转储中重新创建数据库
  2. “Simple One”是逐行或逐表转换:
INSERT INTO UTF8_TABLE (UTF8_FIELD)
SELECT convert(cast(convert(LATIN1_FIELD using latin1) as binary) using utf8)
  FROM LATIN1_TABLE;

基本上,这两种情况都将处理字符串到原始符号,然后进行正确编码,而简单转换(使用编码的字段)from table;命令不会发生这种情况。

 类似资料:
  • 嗨,我是redis的新手,想在这里得到一些帮助。我使用java和sql Server2008和redis server。为了与redis交互,我使用jedis api for Java。我知道redis用于存储基于键值的东西。每个键都有值。 问题背景: 我有一个名为“用户”的表,它存储数据,如id,姓名,电子邮件,年龄,国家。这是sql表的模式。现在这个表有一些行(也表示一些数据)。现在,我的主键

  • 我正在尝试从位于的文件导入数据https://drive.google.com/file/d/1leOUk4Z5xp9tTiFLpxgk_7KBv3xwn5eW/view进入数据帧。我试过使用 但是我得到一个错误说"ParserError:错误标记化数据。C错误:期望在行231中有9个字段,看到10"我不想使用'error_bad_lines=False'并跳过数据行。 请帮忙。

  • 我在Java中有一个tiff图像的INT[2048][2048]原始数据数组。我想把那个数组转换回BufferedImage。我该如何进行?

  • 问题内容: 假设我有一个结构: 与数据库表具有相同的架构。将数据库行解析为结构的最简单方法是什么?我在下面添加了一个答案,但是我不确定这是最好的答案。 问题答案: 这是一种实现方法-只需在函数中手动分配所有结构值即可。

  • 问题内容: 使用Firebase库以添加到表单中的表单将数据发送到服务器 例: 使用Firebase方法接收数据时,以这种形式获取String 如何将其转换为Message Object ..... ???? 问题答案: 还有两种方法可以将数据从Firebase 中取出,而无需使用。 第一种 方法是 使用 遍历孩子 的方法 : 在以上代码段中,我们用来获取您的消息。然后,我们用于获取每个特定的子属

  • 问题内容: 我想使用Python将JSON数据转换成Python对象。 我从Facebook API接收了JSON数据对象,我想将其存储在数据库中。 我当前在Django(Python)中的视图(包含JSON): 这可以正常工作,但是如何处理复杂的JSON数据对象? 如果能以某种方式将此JSON对象转换为Python对象以方便使用,会不会更好呢? 问题答案: 您可以使用和在一行中完成操作: 或者,