Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การปรับปรุง Internationalization ใน Java 9 มีอะไรบ้าง

Internationalization enhancements ใน Java 9 รวมถึง Unicode 8.0 UTF-8 properties files และการเปิดใช้งาน CLDR locale data โดยค่าเริ่มต้น Java 9 รองรับถึง Unicode 8.0 standards ด้วย 10,555 characters, 29 scripts, และ 42 blocks

Properties Files Encoding

ใน Java 9 properties files โหลดด้วย UTF-8 encoding โดยค่าเริ่มต้น การอ่าน input stream โดยค่าเริ่มต้นอาจโยน MalformedInputException หรือ UnmappableCharacterException ในกรณีนี้ PropertyResourceBundle instance จะ reset สถานะก่อน exception อ่าน input stream ใหม่ใน ISO-8859-1 และดำเนินการต่อ

หากตั้งค่า PropertyResourceBundle.encoding เป็น ISO-8859-1 หรือ UTF-8 แล้ว PropertyResourceBundle จะอ่าน input stream ใน encoding นั้น และโยน exception หากพบ invalid sequence System property อ่านและประเมินตอน initialize PropertyResourceBundle class การเปลี่ยนหรือลบ property ภายหลังไม่มีผล

กรณีระบุ ISO-8859-1

  • ตัวอักษรที่แทนไม่ได้ใน ISO-8859-1 encoding ต้องแทนด้วย Unicode escapes
  • ค่า encoding อื่นๆ จะถูก ignore system property นี้

ตัวเลือกหากมีปัญหา

  • แปลง properties file เป็น UTF-8 encoding
  • ระบุ runtime system property
java.util.PropertyResourceBundle.encoding=ISO-8859-1

สรุปการเปลี่ยนแปลง

ฟีเจอร์Java 8 และก่อนJava 9+
Default locale dataJRE (COMPAT)CLDR
Properties file encodingISO-8859-1 (default)UTF-8 (default)
Unicode supportUnicode 6.0/7.0Unicode 8.0
java.locale.providers defaultJRE, SPICLDR, COMPAT, SPI

การเปลี่ยนเป็น UTF-8 และ CLDR โดยค่าเริ่มต้น ทำให้ Java 9 รองรับ internationalization ได้ดีขึ้นและสอดคล้องกับมาตรฐานสากล