- 締切済み
¥を含む文字列を挿入するとエラーとなります
こんにちわ、よろしくお願いします。 OS:WindowsXP PostgreSQL:8.4.0 DBの文字コードはUTF8で構築しています。 【現象】 文字型のカラムに¥を含んだ文字列を挿入しようとすると以下のエラーになります。 WARNING: nonstandard use of escape in a string literal at character 331 SQL実行中に以下のエラーが発生しました。 ERROR: invalid byte sequence for encoding "UTF8": 0x00 エラーとなるのは例えば「C:\temp\hoge.txt」といった文字列です。 ただし、 「C:/temp/hoge.txt」 「C:\\temp\\hoge.txt」 とした場合は正常に挿入が出来ます。 8.1.11で同じプログラムを動かしているときは問題なく動作していました。 PostgreSQLを最新の8.4.0にバージョンアップしたところ上記のエラーが発生するようになりました。 エンコードの問題かと思い Postgresql.confのclient_encodingを色々設定してみましたが、解決しませんでした。 解決法が見当たらず困っています。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- okinakak
- ベストアンサー率0% (0/1)
\(バックスラッシュ) は制御文字です。 SQL文の中で特殊な文字コードを表現するために使われます。 たとえば、\n なら改行を意味します。 今回の場合、 ERROR: invalid byte sequence for encoding "UTF8": 0x00 とのことなので、SQL文の中に "\0" のような文字が 含まれているのではないでしょうか? 文字として扱いたいなら、必ず"\\"とエスケープする必要があります。
- goold-man
- ベストアンサー率37% (8364/22179)
\は日本語特有記号なので「/」(スラッシュ)に代えます。 プログラムに全角漢字など使うとエラーになります。(半角英数文字を使う)
お礼
早速の回答ありがとうございます。 >\は日本語特有記号なので「/」(スラッシュ)に代えます。 ただ、8.1.11の時は問題なくプログラムが動いていました。 最新版では、その辺が厳密になったということでしょうか? よろしくお願い致します。