MySQLで誤ってエンコードされた文字化けデータをUTF-8に変換する方法
MySQLでは、データがlatin1など誤った文字コードで保存されてしまい、文字化けが発生することがあります。こうした問題は、CONVERT()関数とbinaryキーワードを組み合わせることで、UTF-8へ正しく変換・復元できます。本記事では、具体的な手順をサンプルコード付きで解説します。
基本構文
誤ってエンコードされたデータをUTF-8に変換するには、以下の構文を使用します。
SELECT CONVERT(binary CONVERT(カラム名 USING latin1) USING UTF8) AS 別名 FROM テーブル名;
サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成します。以下のクエリを実行してください。
mysql> create table UtfDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(15),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.76 sec)テストデータの挿入
続いて、INSERTコマンドを使ってレコードを挿入します。ここでは、意図的に文字化けした状態(誤ってエンコードされたアポストロフィ)を含むデータを使用します。
mysql> insert into UtfDemo(Name) values('Obama’s');
Query OK, 1 row affected (0.28 sec)
mysql> insert into UtfDemo(Name) values('John’s');
Query OK, 1 row affected (0.23 sec)
mysql> insert into UtfDemo(Name) values('Carol’s');
Query OK, 1 row affected (0.15 sec)
mysql> insert into UtfDemo(Name) values('Sam’s');
Query OK, 1 row affected (0.19 sec)登録されたレコードの確認
SELECT文ですべてのレコードを表示し、現状を確認してみましょう。
mysql> select *from UtfDemo;
出力結果は以下の通りです。
+----+----------------+ | Id | Name | +----+----------------+ | 1 | Obama’s | | 2 | John’s | | 3 | Carol’s | | 4 | Sam’s | +----+----------------+ 4 rows in set (0.00 sec)
このように、Nameカラムには「’」という不正な文字列がそのまま格納されていることがわかります。
UTF-8への変換クエリを実行する
それでは、誤ってエンコードされたデータをUTF-8に変換してみましょう。実行するクエリは以下の通りです。
mysql> select CONVERT(binary CONVERT(Name using latin1) using utf8) as ListOfName from UtfDemo;
実行結果:
+------------+ | ListOfName | +------------+ | Obama’s | | John’s | | Carol’s | | Sam’s | +------------+ 4 rows in set, 1 warning (0.00 sec)
仕組みの解説
このクエリが機能する仕組みは以下の通りです。
- 第1段階:
CONVERT(Name USING latin1)により、文字化けしたデータをlatin1(Latin-1)として解釈し直します。 - 第2段階:
binaryキーワードでバイナリ型にキャストすることで、MySQLが内部で自動的に行う文字コード変換を防止します。 - 第3段階: 最後に
USING utf8を指定してUTF-8へ変換することで、「’」(右シングル引用符)などの本来の文字が正しく復元されます。
なお、実行結果に「1 warning」と表示される場合は、一部の文字が変換対象の文字セットに存在しないことを示す警告ですが、データ自体は正常に変換されています。大量のデータを一括修正する場合には、事前にバックアップを取得したうえでUPDATE文と組み合わせて適用することをおすすめします。
-
MySQLで特定のカラムのデータをエクスポートする方法(INTO OUTFILEの使い方)
MySQLで特定のカラムのデータをエクスポートする方法 MySQLでテーブルから特定のカラム(列)のデータだけをファイルに書き出したい場合は、SELECT文とINTO OUTFILEを組み合わせるのが最もシンプルで確実な方法です。この記事では、実際にテーブルを作成し、データを投入したうえで、特定のカラムをテキストファイルへエクスポートする手順を順番に解説します。 基本構文 特定のカラムをファイルに出力する際の基本構文は次のとおりです。 select yourColumnName from yourTableName into outfile yourLocationOfFile; このように
-
JSONをExcelに変換する方法!Power Queryとオンラインツールの使い方を徹底解説
JSON(JavaScript Object Notation)は、さまざまな種類のデータを保存するために広く利用されているデータ形式です。データの保存だけでなく、2つのサーバー間でデータをやり取りする際にも活用されており、APIなどを通じてWebサーバーと通信する場面でよく目にします。JSONファイルの構造は非常にシンプルで、配列とオブジェクトで構成されています。典型的なJSONファイルでは、キーと値のペアが配列内の各オブジェクトに格納されており、インデックスとキーを指定することで目的のデータにアクセスできます。プログラマーや開発者にとってJSONの構造はごく基本的なものですが、一般ユーザー