2

ここの初心者!

同じ「セル」に簡体字中国語と繁体字中国語の両方を含むソース データがあります (申し訳ありませんが、Excel を使用する初心者はここで話します!)、「Load Data Infile」を使用して MYSQL にロードしようとしています。

問題のテキストは「到达广州新冶酒吧!芝一杯華士嘈雜的音樂行行色色的男女」です。簡体字中国語 (「广」) と繁体字中国語 (「華」) の両方があります。

MySQL にロードすると、次のエラーが発生します。

エラー コード: 1366。 列の '\xF0\xA3\x8E\xB4\xE8\x83...' の文字列値が正しくありません > 行 2 の '説明'

データベースの照合は UTF-8 デフォルトの照合であり、入力ファイルも UTF-8 でエンコードされています。

私ができる方法はありますか:

a) SQL がこのデータ行を受け入れるようにする (理想的)、または b) SQL を取得して、このデータ行の挿入をスキップしますか?

ありがとう!さらに詳細が必要な場合はお知らせください。

ケビン

4

1 に答える 1

3

つまずいた場合、それは Unicode の Basic Multilingual Plane にないためです。これは U+FFFF より上にあり、UTF-8 では 3 バイトではなく 4 バイトを占めます。完全に準拠した Unicode 実装ではそれらを同じように扱いますが、MySQL 文字セット utf8 は U+FFFF より上の文字を受け入れません。最近のバージョンの MySQL を使用している場合は、ALTER TABLE を使用して、すべての Unicode 文字を適切に処理する utf8mb4 を使用できます。MySQL は文字あたり 3 バイトではなく 4 バイトを割り当てるため、変更にはいくつかの問題があります。詳細については、 http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-upgrading.htmlを参照してください。

この問題は、「UTF-8 でエンコードされた文字列を UTF-8 でエンコードされた mysql テーブルに挿入すると、「文字列の値が正しくありません」で失敗する」の複製です。

于 2012-09-20T23:19:55.403 に答える