Просто посмотрите на код нижеПреобразование utf8 в gb2312 в Java
try {
String str = "上海上海";
String gb2312 = new String(str.getBytes("utf-8"), "gb2312");
String utf8 = new String(gb2312.getBytes("gb2312"), "utf-8");
System.out.println(str.equals(utf8));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
печать ложь !!!
Я запустил этот код как под jdk7, так и jdk8, а мой стиль кода IDE - utf8.
Может ли кто-нибудь мне помочь?
java is unicode 16, а класс string не имеет символьного кода, что означает независимо от того, какой файл вы читаете, строка в java с определенными символами всегда будет unicode –
Ваш код не имеет смысла. Вы берете строку UTF-16 (как Java хранит строки) и кодируют ее как поток байтов UTF-8, а затем декодируют этот поток байтов **, как будто ** он был закодирован в GB2312. Вы в конечном итоге с мусором! То, что вы, возможно, хотели сделать, - читать кодированный байтовый поток (например, из файла), кодированный UTF-8, и выдает поток байтов с кодировкой GB2312 (например, другой файл), но это не то, что вы делаете. – Andreas