将MySQL查询的输出转换为utf8

时间:2013-04-17 04:15:52

标签: mysql sql utf-8

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

这样的查询
SELECT column1, column2 FROM my_table WHERE my_condition;

但我希望mysql以utf8编码返回column2。在mysql中执行这样的任务有什么功能吗?那是什么?

4 个答案:

答案 0 :(得分:44)

您可以使用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;

答案 1 :(得分:24)

SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table 

答案 2 :(得分:10)

另外:

使用MySQL 客户端库时,您应该阻止转换回连接的默认字符集。 (请参阅mysql_set_character_set() [1]

在这种情况下,请使用额外的强制转换为二进制文件:

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

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

答案 3 :(得分:2)

我已经将下一个代码用于 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 可能不起作用。