46

我的数据库中有一个表,我想运行一个查询

SELECT column1, column2 FROM my_table WHERE my_condition;

但我希望 mysql 返回column2utf8 编码。mysql中有什么功能可以完成这样的任务吗?那是什么?

4

4 回答 4

73

您可以使用 CAST 和 CONVERT 在不同类型的编码之间切换。见:http ://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

SELECT column1, CONVERT(column2 USING utf8)
FROM my_table 
WHERE my_condition;
于 2013-04-17T04:21:28.097 回答
43
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table 
于 2016-12-01T14:01:04.560 回答
23

添加:

使用 MySQL客户端库时,应防止转换回连接的默认字符集。(见mysql_set_character_set()[1]

在这种情况下,对二进制使用额外的强制转换:

SELECT column1, CAST(CONVERT(column2 USING utf8) AS binary)
FROM my_table
WHERE my_condition;

否则,该SELECT语句将转换为 utf-8,但您的客户端库会将其转换回(可能不同的)默认连接字符集。

于 2018-01-22T07:14:35.660 回答
7

我已将下一个代码用于 LATIN1(或您的数据库字符集)到 UTF8 问题:

SELECT column1,
       CONVERT(CAST(CONVERT(column2 USING LATIN1) AS BINARY) USING UTF8) AS column2
  FROM my_table
 WHERE my_condition

它从 LATIN1 转换为 BINARY,然后转换为 UTF8,因为直接从 LATIN1 转换为 UTF8 可能不起作用。

于 2021-07-15T19:41:18.047 回答