У меня есть два китайских слова «果然 有 问题», которые закодированы в GB3212. Однако он ошибочно закодирован в ANSI и стал «彆 衄 恀 枙». С шестнадцатеричным редактором это B9FBC8BBD3D0CECACCE2java: как применить правую кодировку к строке java
Я хотел бы использовать java для исправления кодировки и сохранения ее в UTF-16.
Итак, я стараюсь:
String wrongstr = "彆衄恀枙";
byte[] binary = wrongstr.getBytes("BIG5");
System.out.printf("%s", new String(binary, "GB2312"));
но то, что я получаю: 果 有 问题
я использовал Notepad ++ и может видеть правильное слово?. Я не могу использовать GetBytes ("BIG5") или GetBytes ("US_ANSI") или r.getBytes ("GB2312"), чтобы получить правильный шестигранник (B9FBC8BBD3D0CECACCE2)
Я не знаю, что это неправильно. Пожалуйста, помогите, спасибо заранее.
Есть ли какие-либо * возможность получить исходные данные вместо этого? Эти китайские символы просто не присутствуют ни в одной кодировке, совместимой с ANSI, о которой я знаю (и, конечно же, не ASCII). Не совсем понятно, что вы * получили, но это не так ... откуда взялись эти данные? –
Я использовал notepad ++, текст GB3212, но формат txt хранится как ANSI, поэтому формат неправильный, как я могу исправить неправильное слово в JAVA? спасибо – manhon
Я думаю, вы немного смущены тем, что кодировки на самом деле. Это не может быть как GB3212, так и ANSI ... и ANSI - это не одна кодировка, а целый ряд кодировок, которые совместимы с ASCII для первых 127 символов. Что * создает * файл в первую очередь? Если вы создаете его в Notepad ++, я предлагаю вам просто сохранить его как UTF-8 и использовать его при чтении. –