Kemarin, seorang saudara junior yang baru saja belajar Java mengirimi saya sebuah program dan mengatakan bahwa dia bisa mengkompilasinya hidup -hidup dan mati, dan dia selalu melaporkan masalah pengkodean. Dia mencobanya sendiri, tetapi ada masalah ...
Ketika kami mengedit file sumber Java untuk menyimpannya, itu disimpan dalam pengkodean karakter default dari sistem operasi (set karakter default Windows XP adalah GBK). Saat memanggil perintah Javac, file sumber akan dikodekan dan dikonversi dalam sekali jalan. Jika tidak ada set karakter yang ditentukan, itu akan dikonversi dari set karakter default dari sistem operasi ke karakter unicode default yang diatur di dalam java, dan kemudian file sumber akan dikompilasi ke dalam file kelas dan disimpan ke hard disk dalam bentuk pengkodean unicode.
Setelah memeriksa kesalahan dengan hati -hati, saya menemukan bahwa itu adalah masalah pengkodean file. File -nya dikodekan oleh UTF -8, jadi -encoding ditambahkan dan disusun dengan sukses ~~
tes kelas publik {public static void main (string [] args) {System.out.println ("Hello!"); }}D:/> test javac.java
Test.java:3: peringatan: System.out.println ("日本?); ^Test.java: 3: string yang belum selesai Sistem nilai literal.out.println (" 日本?); ^Test.java: 3: ';' System.out.println ("日本?); ^Test.java: 5: Akhir dari file telah tercapai ketika sintaks parsing}D:/> javac -encoding UTF -8 test.java
Ketika JDK dikompilasi, jika format pengkodean dari program sumber Java tidak ditentukan dengan parameter -encoding, Javac pertama -tama akan mendapatkan format pengkodean yang digunakan oleh sistem operasi secara default. Artinya, ketika menyusun program Java, jika format pengkodean file program sumber tidak ditentukan, JDK pertama -tama akan mendapatkan format pengkodean default dari sistem operasi, XP adalah GBK, dan kemudian JDK akan mengonversi program sumber Java dari format pengkodean ini ke format unicode default di dalam Java dan memasukkannya ke dalam memori. Kemudian, Javac mengkompilasi file format unicode yang dikonversi ke dalam file kelas .class. Pada saat ini, file .class dikodekan unicode dan ditempatkan sementara di memori. Kemudian, JDK menyimpan file kelas yang dikompilasi yang dikodekan di Unicode ke sistem operasi untuk membentuk file .class. File .class terakhir adalah file kelas dengan konten yang disimpan dalam format encoding unicode. Ini berisi string Cina dalam program sumber, tetapi pada saat ini telah dikonversi menjadi format unicode melalui format pengkodean sistem pemasangan.
Secara umum, saya lebih suka menggunakan UTF-8, yang dapat berjalan secara normal di bawah Windows dan Linux ...
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.