Tôi đang thử nghiệm tính tương thích i18n của ứng dụng của mình. Tôi có phiên bản tiếng Anh của Windows 7 có nghĩa là ngôn ngữ hiển thị của hệ thống là tiếng Anh. Và tôi đặt ngôn ngữ hệ thống là tiếng Trung cho ứng dụng không phải unicode.Charset.defaultCharset() nhận kết quả khác dưới JDK1.7 và JDK 1.6
Ứng dụng của tôi gặp sự cố khi xuất tệp Html có ký tự Trung Quốc dưới jdk1.6, nhưng hoạt động tốt khi chạy dưới jdk1.7.
Tôi đã sửa lỗi và tìm ra lý do trực tiếp là Charset.defaultCharset()
trả về các giá trị khác nhau.
Dưới jdk1.7 Charset.defaultCharset()
trả lại GBK
là bộ ký tự cho tiếng Trung.
Dưới jdk1.6 Charset.defaultCharset()
trả lại window_1252
là bộ ký tự cho ngôn ngữ Latinh.
Tôi biết vấn đề có thể được giải quyết bằng cách chỉ định bảng mã, nói utf-8
, bằng mã.
Nhưng tôi muốn biết lý do tại sao Charset.defaultCharset()
trả về các giá trị khác nhau theo JDK1.7 và JDK 1.6.
Khi đoán, hãy đọc cài đặt "ngôn ngữ cho ứng dụng không phải Unicode" là tính năng mới trong JRE 7. của Windows (tôi đoán vì nó có thể không đủ quan trọng để đề cập trong ghi chú phát hành và tính năng tìm kiếm cho cơ sở dữ liệu lỗi không thực sự tìm kiếm cơ sở dữ liệu lỗi.) – millimoose
Đã có một số [Cải tiến Unicode và Quốc tế] (http://download.oracle.com/javase/7/docs/technotes/guides/intl /enhancements.7.html) trong Java 7 - có lẽ điều này đã đi kèm với nó. – Bringer128
Bạn có thể đăng những gì bạn nhận được bằng cách gọi 'System.getProperty (" file.encoding ")' trong cả jdk 6 và 7? – mindas