0

リクエストに文字列を期待するRESTfulサービスがあります。ブラウザから文字列が渡されると、デフォルトのブラウザエンコーディングはISO-8859-1であるため、アクセント付き文字は文字化けします(�)。ブラウザのエンコーディングをUTF-8に変更すると、アクセント付きの文字がリクエスト文字列に保持されます。

毎回ブラウザのエンコーディングを変更する必要がないように、サーバー側で文字列のエンコーディングを変更してUTF-8で文字列を再構築する方法はありますか?

ありがとう

4

2 に答える 2

1

ほとんどのブラウザのデフォルトのエンコーディングは、インストールされているシステムに依存していることがわかりました。私のほとんど(特にWindowsの場合)は、デフォルトでISO-8859-1またはCP1252のいずれかになります。これは、この元の投稿に対応しています。httpヘッダーとhtmlメタタグがUTF-8エンコーディングを指定していることを確認し、サーブレットコンテナがデフォルトでUTF-8を使用するように設定されていることを確認します(http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8を参照してください。 tomcatを使用しています)。

場合によっては、(たとえば)CP1252を使用してアプリケーションからコピーアンドペーストすることで、UTF-8ページのテキストエリアにビットごとに貼り付けることができます。私はこれが文字化けした文字なしで機能するようになったことがありません。

于 2012-10-10T18:23:14.180 に答える
0

UTF-8 エンコード標準は、あらゆる Unicode コード ポイントをエンコードできます。ISO-8859-1 はそれらのごく一部しか処理できません。したがって、ISO-8859-1 から UTF-8 へのトランスコードは問題ありません。UTF-8 から ISO-8859-1 に戻すと、サポートされていない文字が見つかったときに、テキストに「置換文字」(�) が表示されます。テストをトランスコードするには、次のようにします。

byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");

また

byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");
于 2012-10-10T18:15:08.990 に答える