我的数据库中有一个表,我想运行像
这样的查询SELECT column1, column2 FROM my_table WHERE my_condition;
但我希望mysql以utf8编码返回column2
。在mysql中执行这样的任务有什么功能吗?那是什么?
答案 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 可能不起作用。