そのテーブルの特定の行に対してSELECT
クエリを実行中に以下の例外を取得する
ERROR: character with byte sequence 0xc2 0x81 in encoding "UTF8" has no equivalent in encoding "WIN1252"
その行のcolumn
の1つには、UTF-8でエンコードされて挿入された日本語の文字が含まれています。
この問題の修正はありますか?
データベースで使用されているエンコーディングを知っておく必要があります。
SHOW server_encoding;
データベースに接続するときに、クライアントが使用するエンコーディングを指定できます。
SET client_encoding TO 'UTF8';
サーバーとクライアントのエンコーディングが異なる場合、データベースドライバはこれら2つのエンコーディング間で変換を試みます。同等の文字が見つからない場合、エラーがスローされます。
したがって、サーバーエンコーディングとクライアントエンコーディングは、あなたのような問題を回避するために同じである必要があります。
問題を解決するには:
client_encoding
をUTF8に設定します今後この問題を回避するには、データベースに接続するときにclient_encoding
を適切な値に設定することを忘れないでください。
サポートされている文字セット のドキュメントを確認してください。
ここ を参照してください
このエラーが発生しました。「エラー:エンコード「UTF8」のバイトシーケンス<...>の文字は、エンコード「WIN1252」に相当するものがありません。」 MySQLWorkbenchを使用してデータをPostgreSQLからMySQLに移行している間。ターゲットのMySQLデータベースにUTF8エンコーディングがあり、すべてをそれにマップできると思ったため、なぜこれが発生したのかわかりませんでした。
この問題の本当の根本原因は、ソースDBに接続するために使用し、Workbenchで指定したPostgreSQL ODBC Driver(ANSI)であり、次のように変更した後のPostgreSQLドライバーであることが判明しました。 PostgreSQL ODBCドライバー(UNICODE)すべてが正常に機能しました。
Crystal Reportsがフィールドで次の文字セットを確認すると、エラーが発生しました:[18/03/2019 2:20 PM]
結局、私はそのフィールドの内容を変更しただけですが、適切なPostgreSQL ODBC UTF8用に設計されたドライバーが見つからない限り、この問題は数週間ごとにポップアップするでしょう。データクレンジングが必要です。
それはクリスタルレポートで私と一緒に起こりました...
エラーを生成していたビューの列の内容を変更しました...
文字「0xc20x81」が「chr(128)」と等しいことを発見しました http://lwp.interglacial.com/appf_01.htm -したがって、この文字を次のように置き換えました:( replace((mi.complemento):: text、chr(128)、 'C' :: text))::文字変化(400)AS補完
乾杯!