次の例外が発生します。
Caused by: org.postgresql.util.PSQLException: ERROR: character 0xefbfbd of encoding "UTF8" has no equivalent in "WIN1252"
SQLまたはプログラムのいずれかを介して、そのような文字を根絶する方法はありますか?
(SQLソリューションをお勧めします)。
WIN1252を使用してDBに接続することを考えていましたが、同じ問題が発生します。
次の例外が発生します。
Caused by: org.postgresql.util.PSQLException: ERROR: character 0xefbfbd of encoding "UTF8" has no equivalent in "WIN1252"
SQLまたはプログラムのいずれかを介して、そのような文字を根絶する方法はありますか?
(SQLソリューションをお勧めします)。
WIN1252を使用してDBに接続することを考えていましたが、同じ問題が発生します。
同様の問題があり\encoding UTF8
、クライアントでエンコーディングをUTF8に設定してからINSERT INTO foo (SELECT * from bar WHERE x=y);
. 私のクライアントは WIN1252 エンコーディングを使用していましたが、データベースは UTF8 であったため、エラーが発生しました。
詳細については、PostgreSQL wiki のCharacter Set Support (開発ドキュメント) を参照してください。
このメッセージを受け取ったとき、あなたはどうしますか?Postgres にファイルをインポートしますか? devstuff が言ったように、それは BOM キャラクターです。これは、テキスト ファイルが UTF8 エンコーディングで保存されるときに、Windows が最初にテキスト ファイルに書き込む文字です。これは非表示の幅 0 の文字であるため、テキスト エディタで開いても表示されません。
このファイルをメモ帳などで開いて、ANSI エンコーディングで名前を付けて保存し、ファイルに行を追加 (または同様set client_encoding to 'WIN1252'
の行を置き換え) してみてください。
キャラクターを排除しないでください。それらは本物であり、正当な理由で使用されています。代わりに、Win1252 を根絶してください。
Postgres の部分文字列関数を使用し、代わりにそれを選択することで回避できました。
select substring(comments from 1 for 200) from billing
特殊文字が各フィールドを開始したというコメントは、最終的にそれを解決するのに大きな助けになりました.
この問題は、postgresql 9.1 DB にアクセスする古い Access 97 アプリで 2016 年 11 月 19 日頃に発生しました。
これは、ドライバーを ANSI ではなく UNICODE に変更することで解決されました (plang のコメントを参照)。
Windows 10 で北京語をデフォルト言語として使用しているときに、この問題に直面しました。この問題は、データベースを UTF-8 でインポートしようとしたために発生しました。psql で確認して "\l" を実行すると、collate が表示され、cytpe は北京語です。
解決策として、OS 言語を US にリセットし、PostgreSQL を再インストールします。照合が UTF-8 に戻ると、OS 言語を再度リセットできます。
ここに完全なコンテキストと解決策を書きますhttps://www.yodiw.com/fix-utf8-encoding-win1252-cputf8-postgresql-windows-10/