Rumah  >  Artikel  >  Java  >  Analisis contoh pengekodan aksara Java

Analisis contoh pengekodan aksara Java

PHPz
PHPzke hadapan
2023-05-09 14:13:071322semak imbas

1. Fail Java disusun untuk membentuk kelas

Pengekodan fail Java di sini mungkin pelbagai, tetapi pengkompil Java akan membetulkan pengekodan ini secara automatik mengikut pengekodan format fail Java Selepas membaca, fail kelas dijana Pengekodan fail kelas di sini ialah pengekodan Unicode (khususnya, pengekodan UTF-16).

Oleh itu, tentukan rentetan dalam kod Java:

String s="Chinese characters";

Tidak kira apa pengekodan fail java yang digunakan sebelum penyusunan, selepas penyusunan Selepas menjadi kelas, semuanya adalah sama - diwakili oleh pengekodan Unicode.

2. Pengekodan dalam JVM

Apabila JVM memuatkan fail kelas dan membacanya, ia menggunakan pengekodan Unicode untuk membaca fail kelas dengan betul, kemudian yang ditakrifkan pada asalnya String s="Chinese characters ";Perwakilan dalam ingatan ialah pengekodan Unicode.

Apabila memanggil String.getBytes(), anda sebenarnya telah membeli kutukan aksara yang bercelaru. Kerana kaedah ini menggunakan set aksara lalai platform untuk mendapatkan tatasusunan bait yang sepadan dengan rentetan. Dalam Windows versi Cina Apabila sistem dan pangkalan data yang berbeza dikodkan beberapa kali, jika prinsipnya tidak difahami, kod bercelaru mungkin terhasil dengan mudah. Oleh itu, dalam sistem, adalah perlu untuk menyatukan pengekodan rentetan Penyatuan ini secara samar-samar dikatakan sebagai penyatuan luaran. Sebagai contoh, parameter rentetan kaedah, aliran IO, dalam sistem Cina, anda boleh menggunakan GBK, GB13080, UTF-8, UTF-16, dsb., tetapi anda perlu memilih beberapa set aksara yang lebih besar untuk memastikan sebarang aksara yang boleh digunakan Semua boleh dipaparkan seperti biasa untuk mengelakkan masalah watak bercelaru. (Dengan mengandaikan bahawa kod ASCII digunakan untuk semua fail) Maka penukaran dua arah adalah mustahil.

Adalah penting untuk ambil perhatian bahawa UTF-8 tidak memuatkan semua pengekodan set aksara Cina Oleh itu, dalam keadaan khas, aksara bercelaru mungkin muncul apabila menukar UTF-8 kepada GB18030 sistem Cina ini suka menggunakan pengekodan UTF-8 tanpa dapat menjelaskan sebabnya! Perkara yang paling bodoh ialah berbilang orang bekerja pada sistem Sesetengah orang menggunakan pengekodan GBK untuk fail kod sumber, ada yang menggunakan UTF-8 dan ada yang menggunakan GB18030. FK, mereka semua adalah orang Cina, dan ia bukan projek penyumberan luar Mengapa menggunakan UTF-8. Adalah OK untuk menggunakan GBK18030 untuk semua kod sumber, untuk mengelakkan pengekodan aksara yang tidak dapat dikenali apabila skrip ANT disusun.

Oleh itu, untuk sistem Cina, sebaiknya pilih pengekodan GBK atau GB18030 (sebenarnya, GBK ialah subset GB18030) untuk mengelakkan aksara bercelaru ke tahap maksimum.

3. Pengekodan rentetan dalam ingatan

Rentetan dalam ingatan tidak terhad kepada rentetan yang dimuatkan terus daripada kod kelas, terdapat juga beberapa Rentetan dibaca daripada fail teks, sesetengahnya dibaca daripada pangkalan data, dan sesetengahnya mungkin dibina daripada tatasusunan bait Walau bagaimanapun, ia pada dasarnya tidak dikodkan Unicode Sebabnya mudah, pengoptimuman storan.

Oleh itu, pelbagai isu pengekodan perlu ditangani Sebelum memproses, pengekodan "sumber" mestilah jelas, dan kemudian dibaca dengan betul ke dalam memori menggunakan kaedah pengekodan yang ditentukan. Jika ia adalah parameter kaedah, pengekodan parameter rentetan mestilah jelas, kerana parameter ini mungkin dihantar daripada sistem Jepun yang lain. Apabila pengekodan rentetan jelas, rentetan itu boleh diproses dengan betul seperti yang diperlukan untuk mengelakkan aksara bercelaru. Apabila menyahkod dan mengekod rentetan, kaedah berikut hendaklah dipanggil:

public class Test {   public static void main(String[] args) {   System.out.println("当前JRE:" + System.getProperty("java.version"));   System.out.println("当前JVM的默认字符集:" + Charset.defaultCharset());   }   }

Atas ialah kandungan terperinci Analisis contoh pengekodan aksara Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam