0

エンコードされた中国語の単語をデコードする次のコード行:

URLDecoder.decode("%E4%BB%BB%E4%BD%95%E8%BD%A6%E8%BE%86%E5%BA%94",
    "UTF-8").getBytes().length

JSP ページ (Jboss) で実行すると、5 が出力されます。

<%= URLDecoder.decode("%E4%BB%BB%E4%BD%95%E8%BD%A6%E8%BE%86%E5%BA%94", 
       "UTF-8").getBytes().length %>

デスクトップ アプリケーションで実行すると、15 が出力されます。

public static void main(String[] args) {
    System.out.println(URLDecoder.decode(
        "%E4%BB%BB%E4%BD%95%E8%BD%A6%E8%BE%86E5%BA%94", "UTF-8"
    ).getBytes().length);
}

なんで?また、jsp を 15 にしたいのですが、どうすればよいでしょうか?

4

2 に答える 2

2

JBoss は、文字列内のすべての文字を表現できない別のデフォルト エンコーディングを使用しているようです。おそらく使用する必要がありますgetBytes("UTF-8")

于 2009-10-06T21:07:50.100 に答える
0

違いがある理由はわかりません (実行している特定の Java 環境によって異なります) が、その違いが何であるかはわかります。

文字列には 15 バイトあります。これらのバイトは、それぞれ 3 バイトの 5 つの Unicode 文字を表します。

これは、3 バイトの UTF-8 文字の最初のバイトが常に 16 進数の「E」で始まるためです。

于 2009-10-06T21:11:25.667 に答える