-2

ユーザーに財務データを表示する webapp を作成しています。英国出身で、通貨に GBP £ を使用しているため、この文字がよく使用されます。

ただし、時々、£ は中央に疑問符が付いたひし形として表示され、Web ページでは無効な文字 UTF-8 バイト 1 の 1 バイト文字列がスローされます。

£記号を表示するUTFセーフな方法はありますか? これが私が現在行っていることの例です:

 "Rent Per Annum: £" + '${tenant.currentRent}'
4

2 に答える 2

4

特定の問題には、少なくとも次の 1 つ以上の原因が考えられます。

  1. JSP ファイルは、エディタ (Eclipse、Netbeans、メモ帳など) ではなく、UTF-8 エンコーディングを使用して保存されています。

  2. サーバーは、ネットワーク経由で送信する前に、JSP によって生成された文字をバイト ストリームにデコードするために UTF-8 を使用しませんでした。

  3. ブラウザは、ネットワークからのバイト ストリームを文字にエンコードするために UTF-8 を使用しませんでした。

これらの問題は、次のように解決できます。

  1. UTF-8 を使用して JSP ファイルを保存するようにエディターを構成します。私は STS に詳しくありませんが、Eclipse ベースであることは知っているので、おそらく標準の Eclipse と同じでしょう。[ウィンドウ] > [設定] > [一般] > [ワークスペース] > [テキスト ファイルのエンコード] に移動し、ドロップダウンで適切なエンコードを選択します。

    ここに画像の説明を入力

    別の方法は、HTMLエンティティを使用することです£(他の回答者が示唆しているように)。この方法では、JSPファイルが保存されるエンコーディングには関係ありません。文字列に含まれるすべての文字£は、基本的な ASCII エンコーディングで既にサポートされており (世界で使用されているすべての適切な文字エンコーディングは基本的に ASCII を「拡張」しているため、常に機能します)、HTML インタープリター (Web ブラウザー) は HTML エンティティを次のように変換します。右の文字。

  2. サーバーは、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>
    
  3. ブラウザーは、HTTP 応答をエンコードするために UTF-8 を使用するように指示する必要があります。これはcharset、HTTP 応答Content-Typeヘッダーの属性を UTF-8 に設定することで解決されます。これは、解決策によって暗黙のうちに #2 が行われています。

以下も参照してください。

于 2012-09-09T14:47:38.020 に答える
0

これをエンティティとして HTML に書き込むポータブルな方法は、&pound;または一般的なケースでは、その文字コード&#163;または&#xA3;£ です。このように、ソースはプレーンな 7 ビット ASCII であるため、基本的にエンコーディングとは無関係です (EBCDIC などの難解な方法は無視されます)。http://www.fileformat.info/info/unicode/char/a3/index.htmも参照してください。

于 2012-09-09T14:12:43.963 に答える