5

UTF-8 として物理的にエンコードされ、PC で (firefox を使用して) 文字セットとして UTF-8 が指定されているこの Web ページを表示すると、Björk の ö など、複数のバイトで適切にエンコードする必要がある文字が表示されません。 、リンクをクリックしてから、Bセクションを開いて、私の意味を確認してください

http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084_index.html

(このページは、jakarta-tomcat を使用して Linux サーバーでホストされています)

ただし、ハードドライブにファイルとして保存すると、元のファイルは Firefox で問題なく表示されます。リモート サイトからローカル PC にファイルをコピーして、同じファイルがあることを確認しましたが、それでも問題なく表示されます。

では、なぜウェブサイトで正常に表示されないのですか? tomcat の問題でしょうか?

編集 最初の回答のコメントでは、応答エンコーディングを正しく設定する必要があることを確認する必要があると書かれています。これを行うにはどうすればよいですか?

uri パラメータを utf8 として解析しないことに注意してください。また、作成した JSP ページを UTF8 としてエンコードしたくありません。これらは ISO-8859-1 として正常に動作し、変更すると壊れる可能性があります。.html ページを UTF8 として表示したいだけで、このアプリケーションに対してのみ、webapps フォルダーに複数のアプリケーションがあり、Tomcat 7 を使用しています。

編集

以下の回答で示唆されているように、web.xmlファイルに追加しました

 <filter>
    <filter-name>CharacterEncoding</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<mime-mapping>
  <extension>html</extension>
  <mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>

この種の機能により、URL は正しく表示されるようになりましたが、リンクは機能しません。

ソースを見ると、正しいリンクを使用しているように見えますが、エラー メッセージには UTF8 ではなく拡張表記として表示されます

彼女はレポート全体を持っているので、左側のリンクをクリックすると右側に結果が表示されます

http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084.html

リンクをコピーして貼り付けても機能しません。貼り付けられたリンクが間違っているように見えるためです。

4

1 に答える 1

6

あなたのページはこのヘッダーを返しています:

コンテンツタイプ:テキスト/html; 文字セット= ISO-8859-1

ただし、ページは UTF-8 でエンコードされています。

このスレッドに従って、応答ヘッダーを変更する方法を確認できます。

Tomcat 7.0.35 は、静的 HTML ファイルの HTTP 応答ヘッダー Content-Type charset を設定します

[編集]

2 番目の問題は、サーバーが URL のエンコードに使用することを想定しているエンコードに関連しています。

それらは utf-8 でエンコードされるため、Tomcat の設定を次のように更新できます。

<Connector port="<whatever>" URIEncoding="UTF-8"/>

しかし、私が強くお勧めするのは、この種の文字を URL にも html ファイル名にも使用しないことです。サーバーの起動時にユーザーが使用しているエンコーディングなど、ここにはさらに多くのことが関係しています。また、注意が必要な調整がさらに多くあります。これらの文字の使用を避けるだけで、これらの問題を回避できます。

[/編集]

それが役に立てば幸い。

于 2013-09-19T16:00:22.260 に答える