まず、それは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
サーバが必要前者。私を助けることができる誰にも感謝します。
これは明らかです。 RFC2396で定義されているように、URIはUTF8を仕様で使用します。 – Polynomial
@Polynomial多分それほど意味をなさないかもしれませんが、時にはそれが必要であり、Webブラウザーはそれを行う方法を知っています。 –
私が考えることができる解決策は、文字列の各* byte *(charではない)を16進表現に変換してアップロードすることだけです。ここにJSの文字列からエンコーディングエラーのあるバイト配列を取得することについての素晴らしい答えがあります:http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string – Polynomial