ユーザーに財務データを表示する webapp を作成しています。英国出身で、通貨に GBP £ を使用しているため、この文字がよく使用されます。
ただし、時々、£ は中央に疑問符が付いたひし形として表示され、Web ページでは無効な文字 UTF-8 バイト 1 の 1 バイト文字列がスローされます。
£
記号を表示するUTFセーフな方法はありますか? これが私が現在行っていることの例です:
"Rent Per Annum: £" + '${tenant.currentRent}'
ユーザーに財務データを表示する webapp を作成しています。英国出身で、通貨に GBP £ を使用しているため、この文字がよく使用されます。
ただし、時々、£ は中央に疑問符が付いたひし形として表示され、Web ページでは無効な文字 UTF-8 バイト 1 の 1 バイト文字列がスローされます。
£
記号を表示するUTFセーフな方法はありますか? これが私が現在行っていることの例です:
"Rent Per Annum: £" + '${tenant.currentRent}'
特定の問題には、少なくとも次の 1 つ以上の原因が考えられます。
JSP ファイルは、エディタ (Eclipse、Netbeans、メモ帳など) ではなく、UTF-8 エンコーディングを使用して保存されています。
サーバーは、ネットワーク経由で送信する前に、JSP によって生成された文字をバイト ストリームにデコードするために UTF-8 を使用しませんでした。
ブラウザは、ネットワークからのバイト ストリームを文字にエンコードするために UTF-8 を使用しませんでした。
これらの問題は、次のように解決できます。
UTF-8 を使用して JSP ファイルを保存するようにエディターを構成します。私は STS に詳しくありませんが、Eclipse ベースであることは知っているので、おそらく標準の Eclipse と同じでしょう。[ウィンドウ] > [設定] > [一般] > [ワークスペース] > [テキスト ファイルのエンコード] に移動し、ドロップダウンで適切なエンコードを選択します。
別の方法は、HTMLエンティティを使用することです£
(他の回答者が示唆しているように)。この方法では、JSPファイルが保存されるエンコーディングには関係ありません。文字列に含まれるすべての文字£
は、基本的な ASCII エンコーディングで既にサポートされており (世界で使用されているすべての適切な文字エンコーディングは基本的に ASCII を「拡張」しているため、常に機能します)、HTML インタープリター (Web ブラウザー) は HTML エンティティを次のように変換します。右の文字。
サーバーは、UTF-8 を使用して JSP 出力をデコードするように指示する必要があります。これは、JSP ごとに行うことができます。
<%@page pageEncoding="UTF-8" %>
またはアプリケーション全体で
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
ブラウザーは、HTTP 応答をエンコードするために UTF-8 を使用するように指示する必要があります。これはcharset
、HTTP 応答Content-Type
ヘッダーの属性を UTF-8 に設定することで解決されます。これは、解決策によって暗黙のうちに #2 が行われています。
これをエンティティとして HTML に書き込むポータブルな方法は、£
または一般的なケースでは、その文字コード£
または£
£ です。このように、ソースはプレーンな 7 ビット ASCII であるため、基本的にエンコーディングとは無関係です (EBCDIC などの難解な方法は無視されます)。http://www.fileformat.info/info/unicode/char/a3/index.htmも参照してください。