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.
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.
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.
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 melaluiDfile.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
你
ialah0101010010
, dan ia perlu dikodkan mengikut utf-8 untuk mendapatkan simbol你
dan. memaparkannya.