javascript‎ > ‎

Ajaxで日本語をサーバーへ送信(GET/POST)する際にエラー???

2010/10/21 5:15 に いつかはちょうになる が投稿
実行されている環境はサーバーサイドがPHP5、クライアントサイドがJavascriptでPrototype.jsをライブラリに利用している。サーバーサイドのデータベースはMySQL5でどの環境も指定できる文字コードはすべてUTF-8に設定されている。この状態で、クライアントサイドからAjaxで日本語をPOSTしようとした際にサーバーサイドのスクリプトが正常に動作しなかった。英数字だけの場合は正常に動作する。送信前に日本語が入る可能性のある部分についてはescapeを入れているので大丈夫だと思っていたのだが、なぜかPHPで送信したPOSTの要素を参照するとそこでプログラムが止まってしまう。原因は送信前に行っていたescapeにあり、ここで利用しなければならないのはescapeではなくencodeURIだった。encodeURI&が変換対象に含まれないのは有名なところなので、以下のような処理を実行しPOSTに加えるようにしたところ、正常にサーバーサイドでも動作するようになった。

(xhtmlにはあらかじめ送信したい文字列が格納されている)
xhtml=encodeURI(xhtml).replace(/&/g , "%26")

/&/g は正規表現と呼ばれるパターンマッチ文になり、「文字列中に含まれているすべての&を対象とする」という意味を示す。


Comments