[pgsql-jp: 36849] Re: client encoding と PQexec
nomoto
shin-1 @ ca2.so-net.ne.jp
2006年 3月 9日 (木) 22:47:36 JST
nomotoです。
以前SJISで同じ現象が発生してDBDのソースを調査したのですが
DBDのquote処理は、マルチバイト文字を考慮してないのでSJIS文字
2バイト目の\までエスケープしてしまうため、SJISでDBI::DBDを使って
はダメだ。という結論に達しました。
自前でquoteすればいいという話ですが、それではプレースホルダを
使えなくなるので、簡単に対応できるのはCLIENTENCODINGをEUCにして、
EUCにコード変換済みの値を渡してあげるのが良いと思います。
> 従来 Shift_JIS な HTML を生成する Perl CGI で、EUC-JP な PostgreSQL
>DB からデータを持ってくるのに、Jcode.pm などを使って値を明示的に変換す
>る、ということをしていたのですが、ちょっと今回 client encoding を指定
>する機能を使ってみようと思いました。
との事ですが、一番なのはソースもEUCにしちゃって、HTMLを出力する
ところとフォームからのパラメータを読み込むところで(プログラムへの
inとoutで)SJIS<=>EUCの文字コード変換をしてしまうのがスマートかと
思います。
pgsql-jp メーリングリストの案内