[PHP-users 32040] Re: php+mysql+PrototypeをEUC-JP環境で運用したい。

YuGo yu.gotou @ gtec-ni.com
2007年 4月 26日 (木) 20:44:08 JST


高橋政利 さま。

> やってみました。変化は無いように見えます
というのは、あいまいな結論ですね。
まあEUC-JPで渡っているということでしょうか。

いろいろがんばってだめだったら、UTF-8に切り替えたほうがいいですよ。
その理由としては、

1.最近のDBMSは、複数のエンコーディングに対応できる。
2.ApacheはAddDefaultCharset Noneで支障ない。
3.PHPも複数のエンコーディングを扱うのは簡単。
4.XMLもUTF-8が優勢。

最悪DBはEUC-JPのままでも、Ajaxとデータのやり取りはできます。前に書いたと
おり渡す前、受け取る前にPHPで変換すればよいからです。私もやむを得ざる事
情によりPostgreSQLですが、EUC-JPのテーブルとAjaxを組み合わせて運用してい
ます。
なお、もし乗り換える場合はUTF-8を扱えるテキストエディタで編集して、.php
であれ.htmlであれすべてUTF-8で保存することをお忘れなく。


>> そのinput_dataがUTF-8であるなら
> 実際、そこが知りたい所であります。
> 私もクライアント側スクリプトからサーバー側スクリプトに引き渡しているデー
> タの文字コードがUTF-8と思いこんでましたが、ApacheもPHPもEUC-JPで動作して
> いますので、それも良くわからなくなってしまって居るところです。
> 
>> INSERTするまえにEUC-JPに
>> コンバートしなければいけない
> やってみました。変化は無いように見えます。
> 
> ありがとうございました。
> 
> 変更点
> 
> サーバー側
> [check_ajax.php]
> 
> <?php
> require_once("DB.php");
> $dsn = 'mysqli://hogehoge:hogehoge@localhost/ajax_db';
> $db = DB::connect($dsn);
> if (PEAR::isError($db)) { die($db->getMessage()); }
> 
> $sql = 'INSERT INTO table1 (nyuji) VALUES (?)';
> //$data = array(1, 4);
> $data = mb_convert_encoding($_GET['input_data'], "EUC-JP", "UTF-8") .'と入力';
> 
> $res =& $db->query($sql, $data);
> if (PEAR::isError($res)) { die($res->getMessage()); }
> 
> echo $data .'を登録しました。';
> 
> ?>
> 
> 
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 


PHP-users メーリングリストの案内