1

JavaScript で文字列を「UTF-8」から「cp1252」にエンコードしたいと考えています。

utf-8 として送信された HTML ドキュメントがあり、そのドキュメントには、「二」などの「UTF-8」文字を含む JsonString を保持する隠しフィールドがあります。Java Bean がサーバー側で正しい値を受信せず、"?" を取得します。

    <h:inputHidden id="hiddenPropertiesValues" 
        value="#{Bean.newProperties}"/>

Java Bean クラスsscce

    public void setNewProperties( String newProperties ) {
        this.newProperties = newProperties;
    }

最初にJavaコードでJsonStringを「cp1252」にトランスコードしようとしました。次に、トランスコードされた JsonString を隠しフィールドに入力します。Bean は正しい文字を取得できます。

そこで、文字列を「UTF-8」から「cp1252」にJavaScriptでエンコードすることで、この問題を解決できると考えました。

Html ファイルと Java Bean ファイルの両方が「UTF-8」を使用します。

4

1 に答える 1

2

まず、Unicode にはISO8859-1 よりもはるかに多くの文字が含まれているため、そうすることができません。

第二に、エンコーディングについて心配する必要は (ほとんど) ありません。ブラウザがエンコーディングを処理してくれるからです。内部的には、ドキュメントのエンコーディングに関係なく、JS は常に UTF-16 を使用します。document.writeまたは DOM 操作を使用formし、特定のエンコーディングが必要な場合は、ブラウザが変換を処理します。

あなたが本当にすべきことは、サーバー側の実装を改善し、そこで UTF-8 に切り替えることだと思います。

于 2012-12-25T09:45:18.263 に答える