Có vấn đề với mã này? Tôi đã tạo một chuỗi ISO8859. Vì vậy, hầu hết các ÄÖÜ là một số krypooutput. Đó là tốt. Nhưng làm thế nào để chuyển đổi chúng trở lại ký tự bình thường (UTF8 hoặc một cái gì đó)?Chuyển đổi chuỗi ISO8859 thành UTF8? ÄÖÜ => ÃÃ tại sao?
String s = new String("Üü?öäABC".getBytes(), "ISO-8859-15");
System.out.println(s);
//ÃÃŒ?öÀABC => ok(?)
System.out.println(new String(s.getBytes(), "ISO-8859-15"));
//ÃÂÃÅ?öÃâ¬ABC => ok(?)
System.out.println(new String(s.getBytes(), "UTF-8"));
//ÃÃŒ?öÀABC => huh?
Giả sử rằng "krypooutput" có nghĩa là đầu ra từ một hàm mã hóa, tại sao bạn đang cố chuyển đổi nó thành "ký tự bình thường". Điều đó là không an toàn, vì nó sẽ dẫn đến mất dữ liệu. Nếu bạn cần biểu mẫu có thể đọc được của con người, hãy sử dụng mã hóa hex hoặc mã hóa url. –
Không có thứ như "ISO8859 String" trong Java. Xem http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html – axtavt
Sau đó, cách chuyển đổi chuỗi đầu vào như "ÃÃŒ? öà € ABC" thành bình thường? (nếu tôi biết rằng chuỗi là từ một tập tin ISO8859). – Lissy