引用符、スペース、「エキゾチック」なUnicode文字を含む文字列をエンコードし、JavaScriptのencodeURIComponent関数と同じ出力を生成するものを考え出すために、Javaコードのさまざまなビットを試してきました。
私の拷問テスト文字列は「A」B±「
Firebugに次のJavaScriptステートメントを入力すると:
encodeURIComponent('"A" B ± "');
-それから私は得る:
"%22A%22%20B%20%C2%B1%20%22"
これが私の小さなテストJavaプログラムです:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
-このプログラムは以下を出力します。
URLEncoder.encodeは%22A%22 + B +%C2%B1 +%22を返します getBytesは "A" B± "を返します
閉じますが、葉巻はありません!JavaScriptと同じ出力を生成するようにJavaを使用してUTF-8文字列をエンコードする最良の方法は何encodeURIComponent
ですか?
編集:私はJava1.4を使用して間もなくJava5に移行します。