LOAD DATA INFILE を使用して一部のデータを MySQL データベースにインポートしました。テーブル自体とカラムはUTF8文字セットを使用していますが、データベースのデフォルトの文字セットはlatin 1です。データベースのデフォルトの文字タイプはlatin1で、文字セットを指定せずにLOAD DATA INFILEを使用したため、解釈されましたファイル内のデータは UTF8 でしたが、ファイルは latin1 として表示されます。現在、UTF8 列に不適切にエンコードされたデータがたくさんあります。この記事を見つけました「cp1251に挿入されたUTF8」という同様の問題に対処しているようですが、私の問題は「UTF8に挿入されたLatin1」です。そこでクエリを編集して、latin1 データを UTF8 に変換しようとしましたが、うまくいきません。データは同じように出力されるか、以前よりもさらに複雑になります。例として、Québec という単語は Québec として表示されます。
[追加情報]
HEX() でラップされたデータを選択すると、Québec の値は 5175C383C2A9626563 になります。
このテーブルの Create Table (短縮) は、.
CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT,
.......
`City` CHAR(32) NULL,
.......
`)) ENGINE InnoDB CHARACTER SET utf8;