我的数据库中有一个表,我想运行一个查询
SELECT column1, column2 FROM my_table WHERE my_condition;
Run Code Online (Sandbox Code Playgroud)
但我希望mysql返回column2utf8编码.在mysql中执行这样的任务有什么功能吗?那是什么?
jos*_*gle 49
您可以使用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;
Run Code Online (Sandbox Code Playgroud)
Wal*_*lva 27
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table
Run Code Online (Sandbox Code Playgroud)
Jos*_*uez 13
我已经使用下一个代码来解决 LATIN1 (或你的数据库的字符集)到 UTF8 的问题:
SELECT column1,
CONVERT(CAST(CONVERT(column2 USING LATIN1) AS BINARY) USING UTF8) AS column2
FROM my_table
WHERE my_condition
Run Code Online (Sandbox Code Playgroud)
它从 LATIN1 转换为 BINARY,然后转换为 UTF8,因为直接从 LATIN1 转换为 UTF8 可能不起作用。
Man*_*ork 11
加成:
使用MySQL 客户端库时,应该阻止转换回连接的默认字符集.(见mysql_set_character_set()[1])
在这种情况下,使用额外的强制转换为二进制:
SELECT column1, CAST(CONVERT(column2 USING utf8) AS binary)
FROM my_table
WHERE my_condition;
Run Code Online (Sandbox Code Playgroud)
否则,SELECT语句将转换为utf-8,但您的客户端库会将其转换回(可能不同的)默认连接字符集.