将MySQL查询的输出转换为utf8

ore*_*ani 33 mysql sql utf-8

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

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)

  • 如何对 `select *` 执行此操作,因为这是一个语法错误 `select Convert(* using utf8)` (2认同)
  • 嘿伙计,我相信你不能使用通配符,必须单独转换列:`SELECT CONVERT(mycol1 USING utf8), CONVERT(mycol2 USING utf8)` (2认同)

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,但您的客户端库会将其转换回(可能不同的)默认连接字符集.

  • 这对我有用。谢谢。CONVERT(CAST( 对我不起作用。 (2认同)