2009-06-17 29 views

Trả lời

5

Nó sẽ phụ thuộc vào miền địa phương. Ngôn ngữ khác nhau, mã hóa mặc định khác nhau.

+0

Vì vậy, điều đó phụ thuộc vào việc mã hóa hệ điều hành máy chủ có? –

81

Tập ký tự mặc định của JVM là của hệ thống đang chạy. Không có giá trị cụ thể cho điều này và bạn không nên thường phụ thuộc vào mã hóa mặc định là bất kỳ giá trị cụ thể nào.

Bạn có thể truy cập vào thời gian chạy qua Charset.defaultCharset(), nếu đó là bất kỳ sự sử dụng nào đối với bạn, mặc dù thực sự bạn nên đặt điểm luôn chỉ định mã hóa rõ ràng khi bạn có thể làm như vậy.

+5

Nếu bạn đúng, tôi thấy nó có một chút lạ http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp#text-representation nói rằng nó luôn là UTF-16. –

+30

UTF-16 là cách văn bản được biểu diễn nội bộ trong JVM. Mã hóa mặc định xác định cách JVM diễn giải các byte đọc từ các tệp (ví dụ, sử dụng 'FileReader'). – JesperE

+6

Câu trả lời này là đúng, nhưng để tham khảo, trên Linux thường là "UTF-8" và trên Windows thường là "cp1252". – Jeutnarg

24

Lưu ý rằng bạn có thể thay đổi mã hóa mặc định của JVM bằng cách sử dụng thuộc tính gây nhầm lẫn có tên file.encoding.

Nếu ứng dụng của bạn đặc biệt nhạy cảm với mã hóa (có thể thông qua việc sử dụng API ngụ ý mã hóa mặc định), thì bạn nên đặt rõ ràng điều này khi khởi động JVM thành giá trị nhất quán (đã biết).

+14

Lưu ý rằng 'file.encoding' phải được chỉ định khi khởi động JVM (tức là tham số cmdline -Dfile.encoding hoặc thông qua JAVA_TOOLS_OPTIONS); bạn có thể đặt nó trong thời gian chạy, nhưng nó sẽ không quan trọng. Xem http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding – sleske

19

Có ba "mặc định" mã hóa:

  • file.encoding:
    System.getProperty("file.encoding")

  • java.nio.Charset:
    Charset.defaultCharset()

  • Và mã hóa của InputStreamReader:
    InputStreamReader.getEncoding()

Bạn có thể đọc thêm về nó trên this page.

5

Tôi chắc chắn rằng đây là JVM implemenation cụ thể, nhưng tôi đã có thể "ảnh hưởng" của tôi file.encoding mặc định JVM bằng cách thực hiện:

export LC_ALL=en_US.UTF-8 

(chạy java phiên bản 1.7.0_80 trên Ubuntu 12.04)

Ngoài ra, nếu bạn nhập "ngôn ngữ" từ bảng điều khiển Unix, bạn sẽ thấy thêm thông tin tại đó.

Tất cả tín dụng sẽ chuyển đến http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/

Các vấn đề liên quan