2

私はウェブサイトからISO-8859-2のウェブサイトからデータを受け取り、それをUTF-8(MySQLのエンコーディングとしても使用されます)に変換し、いくつかの変更を行ってデータを保存します...

データを印刷するときはすべて問題ないようです...データをテーブルに保存してそこから印刷するときはすべて素晴らしいです...しかし、新しく受信したデータを比較してmysqlに保存されているデータと比較すると、常に一致しませんがデータは同じです。だから私はDBをチェックしました..DBでデータを開くと、最後または途中に記号があることがわかります...例:Ä、‡など。

何か案が?

更新:トランザクションを有効にするためにInnoDBストレージエンジンを使用しています。正確なDBエンコーディングはUTF8_GENERAL_CIです。

4

1 に答える 1

0

ISO-8859-2入力データを取得しました...

まず、次を使用して奇妙な記号を置き換えました。

$data = str_replace(chr(194), "", $data);

chr() uses ASCII code to search sign... 

次は、データをUTF-8エンコーディングに変換することです

$data = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $data);

文字が変換された文字列を受け取りますが、同じ兆候が何とか発生したので、

$data = str_replace(chr(194), "", $data);

再び...その後、私はしました:

$data = @iconv('UTF-8', 'UTF-8//IGNORE', $data);

これにより、奇妙な文字がまだ含まれている場合でも、UTF-8をクリーンアップできました...最初の@は、障害が発生したときにエラーがスローされないようにするためです...

これは本当に特定のケースだと思います。私は長い間外部データを使用していて、このようなケースはありませんでしたが、いつか誰かがそれを必要とすることを願っています...

皆様のご協力とご協力に感謝申し上げます…地域の皆様のご支援なくして解決することはできません!ありがとう!

于 2012-11-09T10:11:13.413 に答える