0

UTF-8 の代わりにラテン文字セットを使用して設定されたテーブルがいくつかあり、テーブルに不適切な文字を入力することができました。通常の原因は、人々が Word または Outlook からコピー/貼り付けして、これらの厄介な隠し文字をコピーすることです...

これらの文字を識別してきれいにするために使用できるクエリはありますか?

ありがとう、

4

2 に答える 2

0

I assume that your connection chacater set was set to UTF8 when you filled the data in.

MySQL replaces unconvertable characters with ? (question marks):

SELECT  CONVERT('тест' USING latin1);

----
????

The problem is distinguishing legitimate question marks from illegitimate ones.

Usually, the question marks in the beginning of a word are a bad sign, so this:

SELECT  *
FROM    mytable
WHERE   myfield RLIKE '\\?[[:alnum:]]'

should give a good start.

于 2012-05-22T15:48:45.137 に答える
0

おそらく、この「バグ」のようなものに気付いているでしょう。「悪い文字」は、UTF-8 制御文字 (例: \x80) である可能性が最も高いです。次のようなクエリを使用してそれらを識別できる場合があります

SELECT bar FROM foo WHERE bar LIKE LOCATE(UNHEX(80), bar)!=0

そのリンクされたバグから、タイプを使用しBLOBて Windows ファイルからテキストを保存することをお勧めします。

Windows ファイル (テキスト ファイルであっても) を格納する必要がある場合は、TEXT の代わりに BLOB (追加のエンコード フィールドを含む) を使用します。3 バイト UTF-8 および多層エンコーディングのオーバーヘッドよりも優れています。

こちらの Q/Aをご覧ください(クライアント エンコーディングに関するすべてですSET NAMES) 。

于 2012-05-22T15:56:22.417 に答える