1

Word または Outlook のコンテンツを JSF テキストエリアにコピー ペーストしようとすると、1 つの問題が発生します。特定のアフォストロヘ (') の表示に問題がありました。その代わりに、他のいくつかのシンボルが置き換えられています。アプリケーション レベルで ISO-8859-1 の文字エンコーディングを使用しています。テキスト領域が存在する特定のページに次のコードを含めました。それでもシンボルはそこにあります。

これをBeanレベルからエンコードするために、次のコーディングを追加しようとしました。このコードはエンコードされ、テキストにアフォストロフィー (') が表示されます。しかし、同じテキストを挿入すると、他のシンボルがDBに挿入されます。休止状態で変更する必要があるものはありますか。

new String(text.getBytes("ISO-8859-1"),"UTF-8")。

これを修正する解決策を共有してください。

4

2 に答える 2

3

アプリケーション レベルで ISO-8859-1 の文字エンコーディングを使用しています。

あなたの問題があります。ISO-8859-1 でカバーされていない文字は、ISO-8859-1 でカバーされるように変更することは不可能です。引用符を使用した特定のケースについては、ウィキペディアですべての引用符文字のリストを見つけることができます。範囲外のものU+00FFは、ISO-8859-1 でカバーされていません。Outlook、Word などの Microsoft アプリケーションは、U+2xxx範囲内にある「曲線引用符」を使用するため、ISO-8859-1 を使用してエンコードするとMojibakeとして表示されます。

ISO-8859-1 は、 255 文字しかサポートしていない先史時代のやや劣った文字エンコーディングであり、世界征服の準備が整っていません。世界は、ISO-8859-1 がカバーできるよりもはるかに多くの文字を知っています。UTF-8 などの Unicode ベースの文字エンコーディングを使用する必要があります。Unicode は、100 万を超える文字を定義し、サポートしています。

ISO-8859-1 の代わりに UTF-8 を使用するようにアプリケーションを変更する必要があります。JSF 2.x はデフォルトですでに UTF-8 をサポートし、使用していることに注意してください。したがって、具体的な問題は、JSF 1.x を使用しているか、手動で変更したことを示しています。データベーステーブルを含め、すべてを UTF-8 に設定して、それを行うべきではありません。このブログでいくつかの役立つヒントを見つけることができます: Unicode - How to get the characters right?

于 2013-03-15T13:59:29.883 に答える