2013-04-17 92 views
17

我有一个表在我的数据库,我想运行像转换输出为utf8

SELECT column1, column2 FROM my_table WHERE my_condition; 

查询,但我想了MySQL在utf8编码返回column2。是否有任何在mysql中执行此类任务的功能?那是什么?

+1

尝试'SELECT column1,CONVERT(column2 USING utf8)...' –

回答

34

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

比我在其他地方找到的答案要好得多。官方文档对这个问题的回答是一个完整的笑话:“SELECT CAST(_latin1'test'AS CHAR CHARACTER SET utf8);”为什么不在变量名中添加更多的错误符号? – HoldOffHunger

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

谢谢你救了我的一天:) –

+0

谢谢!拯救我的一天! – Portekoi

2

增加:

当使用MySQL 客户端库,那么你应该避免转换回你连接的默认字符集。 (见mysql_set_character_set()[1]

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

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

否则,SELECT语句转换为UTF-8,但是你的客户端库转换回一个(可能不同)默认连接字符集。