Rumah  >  Soal Jawab  >  teks badan

java中这个页面默认是utf-8编码的,1输出乱码可以理解,可是2就不理解了?

s按照gbk解码,在按照gbk组合成String,为什么就不是乱码了呢? 那2这个字符串是最终是什么编码 utf-8还是gbk

PHPzPHPz2743 hari yang lalu704

membalas semua(2)saya akan balas

  • 天蓬老师

    天蓬老师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.

    balas
    0
  • PHP中文网

    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.

    balas
    0
  • Batalbalas