質問: ### 前提・実現したいこと SQLを本を見ながら勉強中です。ものすごく初心者です。 その過程で、PostgreSQL にて、テーブルにデータを登録したいと思っています。 ### 発生している問題・エラーメッセージ サンプルデータを、テキストからコピーして、実行しようとしたら以下のエラーがでました。 ``` invalid byte sequence for encoding "UTF8": 0xa5 ``` ### 該当のソースコード ``` START TRANSACTION; INSERT INTO test VALUES ('0001', 'ああああ', 'いいいいい', 100, NULL, '2018-01-01'); COMMIT; ``` ### 試したこと Mac のターミナル設定の詳細で、 ・テキストエンコーディングを"日本語(EUC)"にしました。 ・「Unicode 東アジアA(曖昧)の文字列をW(広)にする」にチェックをいれました。 そうすると、上記で'ああああ'となっているところの文字化けはなおったのですが、エラーはなおらず。 ちなみに、 \encoding といれると、UTF8 とでます。 原因と対策がわからず進めません。助けていただければ嬉しいです。 ### 補足情報(FW/ツールのバージョンなど) Mac OS Siera バージョン 10.12.3
回答: > > Mac のターミナル設定の詳細で、 > > ・テキストエンコーディングを"日本語(EUC)"にしました。 > > ・「Unicode 東アジアA(曖昧)の文字列をW(広)にする」にチェックをいれました。 > > そうすると、上記で'ああああ'となっているところの文字化けはなおった > > > ということは元のデータ(SQLが書かれているテキストファイル)のエンコーディングが EUC なのでしょう。それでは、エラーになって当たり前です。EUC のファイルを UTF-8 に変換する必要があります。いろいろ方法はありますが、今文字化けせずに見えているのであれば、それをテキストエディットにコピペして保存時の「標準テキストのエンコーディング」で「Unicode(UTF-8)」を選択して保存するのが簡単です。 UTF-8 のファイルができると思いますので、そちらを読み込ませてみてください。 また、データベースのエンコーディングが UTF-8 なのであれば、使うターミナルやエディタもすべて UTF-8 を使われるようにされたほうが良いと思います。