[PHP-users 109] Re: SJISでの全角文字について

Y.Watanabe php-users@php.gr.jp
Tue, 19 Jun 2001 13:10:01 +0900


渡辺です。

#文字コードの設定の悩みの関してはひとごとじゃないんで。。。

"ozaki" wrote on Mon, 18 Jun 2001 23:45:09 +0900
with Subject: [PHP-users 97] SJISでの全角文字について
> 尾崎です
> 
> 初歩的な質問ですが完全に嵌ってしまいましたので
> アドバイスをお願いいたします
> 
> <?
> $str = "ソ";
> print $str;
> ?>
> 
> でパスフレーズエラーが起こります
> 
> 内部文字コード EUC-JP
> ソースはSJISで書いています


php4_jstring-1.1.1.tar.gz パッケージの中のreadme.jpに、
下記のような記述がありました。御参考まで。


■ 一部の文字の後に必ず`\'がつく

内部エンコードをShift_JISにしたとき、一部の文字の後に必ず`\'がついたり、
それ以外の場合でも`"'などの文字が`\"'のようにクォートされる。

PHPの設定であるmagic_quotes_gpcがデフォルトで有効(On)になっているのが
原因です。php3.ini(もしくは、.htaccess)の設定を無効(Off)にするか、スク
リプト側で、StripSlashes関数を使うことによって取り除くことが出来ます。

また、日本語文字列だけ取り除くには、$quote_strが、Shift_JISで表現されて
いるならば ereg_replace関数を用いて、

ereg_replace(sprintf("([%c-%c%c-%c]\\\\)\\\\",0x81,0x9f,0xe0,0xfc),
	"\\1",$quote_str);

とすれば、可能です。

Shift_JISでの「一部の文字」の例(部分):
―⊇そソЫ綾噂化浬棺欺興圭現構砂蚕悉十晶申製曾遜箪捗貼峠能判表塀暴冥予僚禄