Rumah > Soal Jawab > teks badan
s按照gbk解码,在按照gbk组合成String,为什么就不是乱码了呢? 那2这个字符串是最终是什么编码 utf-8还是gbk
天蓬老师2017-04-18 10:53:36
1: Jika s.getBytes() tidak mengambil parameter, ia akan memanggil pengekodan lalai jdk (anda mungkin utf-8) untuk menyahkod rentetan menjadi bait[], dan kemudian anda menggunakan kaedah pengekodan gbk untuk semula -menyahkod bait[] Dikodkan ke dalam rentetan, jadi aksara bercelaru akan muncul.
2.s.getBytes('gbk') Anda menyahkod rentetan mengikut kaedah gbk dan kemudian mengekodnya semula menggunakan kaedah gbk, jadi tidak akan ada aksara yang bercelaru.
PHP中文网2017-04-18 10:53:36
Apa yang anda katakan di atas adalah betul. Saya ingin menambah bahawa pengekodan lalai jdk ialah pengekodan yang dinyatakan dalam file.encoding
Anda boleh mengubah suai pengekodan lalai JVM melalui Dfile.encoding=GBK
.
Untuk menambah sedikit pengetahuan pengekodan dan penyahkodan, jika aksara Cina "Hello" hendak dihantar dalam komputer, ia mesti ditukar kepada binari. Cara menukar kepada binari ialah penyahkodan yang dinyatakan di sini. Terdapat banyak cara untuk mengekod
, seperti Unicode
set aksara. Set aksara ini mengandungi nombor yang sepadan dengan pelbagai simbol Contohnya, 你
diwakili oleh 2345, yang kemudiannya ditukar kepada perduaan dengan cara tertentu (anda boleh mencari proses khusus dalam talian untuk cara menukar).
Selepas menerima rentetan nombor binari ini, cara menukarnya kepada aksara Cina ialah pengekodan yang disebut di sini. Pengekodan perlu diselesaikan dengan cara tertentu untuk mendapatkan surat-menyurat aksara yang betul Contohnya, perduaan 你
ialah 0101010010
, dan ia perlu dikodkan mengikut utf-8 untuk mendapatkan simbol 你
dan. memaparkannya.