2011-12-17 59 views
3

まず、それはuserscriptであり、私はサーバー側のエンコーディングを変更できません。AJAX POSTリクエスト経由でiso-8859-1を送信しますか?

私の問題は、POST params(後でxhr.setRequestHeader経由で送信される)をエンコードするためにencodeURIComponent()を使用すると、文字がutf-8でエンコードされますが、サーバーはiso-8859-1データを受信する必要があります。 iso-8859-1でエンコードするencodeURIComponent()の代わりがありますか?

ここで、あなたが理解を確認するためにexempleです:ウェブサイト上

古典的な形このようなéを送信:yournewmessage:%E9

アヤックスxhr.send('yournewmessage='+encodeURIComponent('é'))経由ではこれを送信します。yournewmessage:%E9%80%80

サーバが必要前者。私を助けることができる誰にも感謝します。

+1

これは明らかです。 RFC2396で定義されているように、URIはUTF8を仕様で使用します。 – Polynomial

+0

@Polynomial多分それほど意味をなさないかもしれませんが、時にはそれが必要であり、Webブラウザーはそれを行う方法を知っています。 –

+1

私が考えることができる解決策は、文字列の各* byte *(charではない)を16進表現に変換してアップロードすることだけです。ここにJSの文字列からエンコーディングエラーのあるバイト配列を取得することについての素晴らしい答えがあります:http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string – Polynomial

答えて

0

私はこの問題を解明して以来、私が行ったのは、utf-8とiso-8859-1の間の等価性を探していました。私はutf-8とcp1252(Windows-1252)の間にあったので、utf-8からcp1252へとcp1252からiso- 8859-1

http://pastebin.com/jTDqR2PQ

醜いコード、フランス語で左のコメント、およびunelegant溶液(これら二つは、多くの類似点を持つ)が、私は実際に動作する解決策を見つけながらunanseredこの質問を見て気分が悪いです。

関連する問題