1. ホーム
  2. java

[解決済み] HTML TitleのUnicode問題、クエスチョンマーク?65533;

2022-02-14 19:44:18

質問

以下のウェブページからタイトルを解析しようとしています。 http://kid37.blogger.de/stories/1670573/

title 要素で apache.commons.lang StringEscapeUtils.escapeHTML メソッドを使用すると、次のような結果が得られます。

Das hermetische Caf�: Rock & Wrestling 2010

しかし、これをutf-8エンコーディングでウェブページに表示すると、クエスチョンマークが表示されるだけです。

以下のコードを使用します。

String title = StringEscapeUtils.escapeHtml(myTitle);

このサイトにタイトルを流すと http://tools.devshed.com/?option=com_mechtools&tool=27 次のような出力が得られ、これは正しいと思われます。

TITLE

<title>Das hermetische Café: Rock &amp; Wrestling 2010</title>

BECOMES(escapeHtmlメソッドに期待してたんだけどなー)。

<title>Das hermetische Caf&eacute;: Rock &amp; Wrestling 2010</title>

何かいいアイデアはないでしょうか?

解決方法は?

U+FFFD (10進数65533)は、"置換文字"です。デコーダが無効なバイト列に遭遇した場合、それは かもしれない (設定によりますが) �を破損したシーケンスに置き換えて続行します。

破損したシーケンスの一般的な理由の1つは、間違ったデコーダが適用されたことです。例えば、デコーダがUTF-8であるにもかかわらず、ページが実際にはISO-8859-1(content-typeヘッダまたは同等のもので別のものが指定されていない場合のデフォルト)でエンコードされているような場合です。

そのため、文字列を渡す前に escapeHtml はすでに "é" に置き換えられており、このメソッドはこれを正しくエンコードしています。

当該ページでは、ISO-8859-1のエンコードを使用しています。取得したリソースを変換する際に、そのデコーダを使用していることを確認してください。 String .