[pgsql-jp: 31386] Re: 「表」が文字列の最後にある場合エラー

Masashi Ohba ohba @ imr.tohoku.ac.jp
2003年 10月 31日 (金) 13:05:59 JST


大場です。

#ほとんどPHPのMLで話すような内容ですね

In message "[pgsql-jp: 31385] 「表」が文字列の最後にある場合エラー",
Hiroshi Ishiura wrote,

>SQLで「表」の字が最後に入っている文字列の場合
>Warning: pg_exec(): Query failed: ERROR: parser: parse error at or near "〜
>発表" at character 112〜〜
>とエラーが起きてしまいます。

おそらく「\」問題でしょう、多分。

>環境は、
>PHP-4.3.2
>magic_quotes_gpc Off
>mbstring.detect_order auto
>mbstring.encoding_translation On
>mbstring.func_overload 0
>mbstring.http_input auto
>mbstring.http_output SJIS
>mbstring.internal_encoding SJIS
>mbstring.language Japanese
>mbstring.script_encoding no value
>mbstring.substitute_character no value 

#WindowsだったらSJISでもいいのかもしれないけど
#質問にOSが何か書いてないんだけど…

サーバがLinuxやFreeBSDだったら、
普通「mbstring.internal_encoding EUC-JP」でしょう。
それにスクリプトにSJIS使うなら
それが可能になったバージョンのPHPを使って
それなりの設定でコンパイルして
「mbstring.script_encoding」も設定しないと
普通は使えないでしょう。

#たまたま、問題の無い文字だけだったから
#正常に動いてるように見えるだけでは?


>EUCで書けばこういう問題はおきないかと思いますが今からソースをEUCに
>全部変更するのは厳しい状況で。。

文字コードの変換だったら
nkfかqkcで一発変換できそうだけど…

でもEUCにしたって、今の設定の
「mbstring.internal_encoding SJIS」でまともに動くかな?

じゃなかったら、SJISスクリプトをつかうために
できるようになった最近のバージョンのPHPで

#多分4.3.2は可能になったバージョンだと思うけど

それなりのオプション付けた./configureとコンパイルして
PHPを入れ替えて、適合するようなphp.iniの設定をしたら
SJISなスクリプトもおそらく問題なく使えるはずです。

が、静的なWebコンテンツがSJISでもいいのは、
htmlの解釈はブラウザがやってるからで
(サーバは単なる置き場と思えば)
まぁ、unix系のOS上でプログラム的に何かしようとすると
SJISはロクなことはないのは事前に調べたら分かるので
使わないことが一番です。

------------------------------------------------
Name: 大場正志(Masashi Ohba)
E-mail: ohba @ imr.tohoku.ac.jp
東北大学 金属材料研究所



pgsql-jp メーリングリストの案内