大人になっても苦手な食べ物、ありますか?

こんにちわ、よろしくお願いします。
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を色々設定してみましたが、解決しませんでした。
解決法が見当たらず困っています。
よろしくお願い致します。

A 回答 (2件)

\(バックスラッシュ) は制御文字です。


SQL文の中で特殊な文字コードを表現するために使われます。
たとえば、\n なら改行を意味します。

今回の場合、

ERROR: invalid byte sequence for encoding "UTF8": 0x00

とのことなので、SQL文の中に "\0" のような文字が
含まれているのではないでしょうか?

文字として扱いたいなら、必ず"\\"とエスケープする必要があります。
    • good
    • 0

\は日本語特有記号なので「/」(スラッシュ)に代えます。


プログラムに全角漢字など使うとエラーになります。(半角英数文字を使う)
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

>\は日本語特有記号なので「/」(スラッシュ)に代えます。
ただ、8.1.11の時は問題なくプログラムが動いていました。
最新版では、その辺が厳密になったということでしょうか?
よろしくお願い致します。

お礼日時:2009/08/19 07:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報