2010-11-18 29 views
0

AjaxとPHPを使用してフィールドをデータベースに更新する必要があります。JavaScriptやjqueryで文字列をエンコードし、phpを使ってデコードする方法

それが正常に動作しますが、以下のような特殊文字があるとき

اللهمانياشكواليكضعفقوتيوقلةحيلتيوهوانيعليالناس

スクリプトはデータベースにジャンクデータを挿入します。

Iは、URLエンコードを行うためのJavaScriptのエスケープ()を使用して試みたが、それはデータを符号化するが、私はPHPを使用して復号化する際には、再びジャンク値を示します。

+1

最初から最後までUTF-8データのように扱う限り、何かをエンコードする必要はありません。あなたのデータベース/データベース接続/アプリケーション/ウェブサイトのエンコーディングは何に設定されていますか? – deceze

+0

私のデータベースは、MySQLで、PHPは文字セットである= UTF-8 私はAJAXを使用しておりますので、私はそれだけでコールを無視した文字列をエンコードしていない場合、URLは、サポートする必要を渡していたパラメータ。 JavaScriptを使用して文字列をエンコードすると、AJAXを介してPHP処理ページにデータが送信されます。 しかし、元の文字列にデコードしようとすると、正しくデコードされません。 – dirtycode

+1

あなたがチェックするためのいくつかの例 - http://stackoverflow.com/questions/4143853/utf-8-problem-when-saving-to-mysql/4143922 – ajreal

答えて

1

あなたはこのように何かを与えることはなく、escapeencodeURIComponentを使用して試すことができます:

%D8%A7%D9%84%D9%84... 

escape一方がもたらすであろう:

%u0627%u0644%u0644%u0647... 

とUnicodeエスケープが誰かを混乱される可能性があります。

+0

ありがとう、encodeURIComponent私にこのような何かを与える %D8%A7%D9%84%D9 %84%D9%87%D9%85%20%D8%A7%D9%86%D9の%の8A .... – dirtycode

+0

しかしPHP私の知る限りのurldecodeでこれをデコードする方法(http://php.net/manual /en/function.urldecode.php)、次に取得するものがアラビア語であるかどうかを確認してから、アラビア語をデータベースに入れて、何が出てくるかを見てください。少なくとも、あなたは誰がユニコードをマングリングしているかを知るでしょう。 –

関連する問題