Có cách nào để thay đổi mã hóa được sử dụng bởi hàm tạo chuỗi (byte []) không?Thay đổi mã hóa mặc định cho Chuỗi (byte [])
Trong mã của riêng tôi, tôi sử dụng String (byte [], String) để chỉ định mã hóa nhưng tôi đang sử dụng thư viện bên ngoài mà tôi không thể thay đổi.
String src = "with accents: é à";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded: "+new String(bytes,"UTF-8"));
System.out.println("Default decoded: "+new String(bytes));
Kết quả của việc này là:
UTF-8 decoded: with accents: é à Default decoded: with accents: é Ã
Tôi đã cố gắng thay đổi hệ thống sở hữu file.encoding
nhưng nó không hoạt động.
Có ai đã thử phương pháp tiếp cận -Dfile.encoding không? Nó sẽ là tuyệt vời để có thể làm điều này một cách nền tảng bất khả tri. –
@MattPassell Chúng tôi sử dụng các arg sau đây khi khởi chạy JVM để đảm bảo rằng chúng tôi chỉ định UTF-8 đúng ở mọi nơi: -Dfile.encoding = ISO646-US -Dsun.jnu.encoding = ISO646-US và có vẻ hoạt động tốt. –
Cảm ơn bạn đã phản hồi. Tui bỏ lỡ điều gì vậy? Tôi chỉ google cho ISO646-US và phát hiện ra nó là một tên chính thức cho ASCII. Làm thế nào để giúp đảm bảo rằng bạn đang sử dụng UTF-8? –