web-dev-qa-db-ja.com

MySQLクエリの出力をutf8に変換します

データベースにテーブルがあり、次のようなクエリを実行したい

SELECT column1, column2 FROM my_table WHERE my_condition;

しかし、mysqlがutf8エンコーディングでcolumn2を返すようにします。そのようなタスクを行うのはmysqlの関数ですか?それは何ですか?

32
orezvani

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;
48
josh-fuggle
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table 

添加:

MySQLクライアントライブラリを使用する場合、接続のデフォルトの文字セットへの変換を防ぐ必要があります。 (mysql_set_character_set()[1] を参照)

この場合、追加のバイナリへのキャストを使用します。

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

それ以外の場合、SELECTステートメントはutf-8に変換されますが、クライアントライブラリは(潜在的に異なる)デフォルトの接続文字セットに変換します。

10
ManuelAtWork