. - .
, , , HTTP , IE , 1, . ( , , IE), , . , , .
, , ( Ã " " ). , , "latin1" , (, , ).
package peter.test;
import java.io.UnsupportedEncodingException;
public class TestEncoding {
public static void main(String args[]) throws UnsupportedEncodingException {
String good = "João";
String bad = "João";
String broken = breakString(good, bad);
fixString(good, broken);
fixString(good, bad);
}
private static String fixString(String good, String bad) throws UnsupportedEncodingException {
byte[] bytes = bad.getBytes("latin1");
String fixed = new String(bytes, "UTF8");
System.out.println("Good: " + good);
System.out.println("Bad: " + bad);
System.out.println("bytes1.length: " + bytes.length);
System.out.println("fixed: " + fixed);
System.out.println();
return fixed;
}
private static String breakString(String good, String bad) throws UnsupportedEncodingException {
byte[] bytes = good.getBytes("UTF8");
String broken = new String(bytes, "latin1");
System.out.println("Good: " + good);
System.out.println("Bad: " + bad);
System.out.println("bytes1.length: " + bytes.length);
System.out.println("broken: " + broken);
System.out.println();
return broken;
}
}
( Sun jdk 1.7.0_03):
Good: João
Bad: João
bytes1.length: 5
broken: João
Good: João
Bad: João
bytes1.length: 5
fixed: João
Good: João
Bad: João
bytes1.length: 6
fixed: Jo £o