第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

您好,請(qǐng)問為什么使用forName("UTF-8")會(huì)出錯(cuò),使用GBK就行呢?

您好,請(qǐng)問為什么使用forName("UTF-8")會(huì)出錯(cuò),使用GBK就行呢?

精慕HU 2021-11-02 11:07:03
public class CharsetTransform { public static void main(String[] args) throws Exception {// Properties properties = System.getProperties();// for (Object key : properties.keySet()) {// String name = (String) key;// System.out.println(name + "------>" + properties.get(key));// } //file.encoding------>UTF-8 // 創(chuàng)建簡體中文對(duì)應(yīng)的Charset Charset cn = Charset.forName("UTF-8"); // 獲取cn對(duì)象對(duì)應(yīng)的編碼器和解碼器 CharsetEncoder cnEncoder = cn.newEncoder(); CharsetDecoder cnDecoder = cn.newDecoder(); // 創(chuàng)建一個(gè)CharBuffer對(duì)象 CharBuffer cbuff = CharBuffer.allocate(20); cbuff.put('隨'); cbuff.put('便'); cbuff.flip(); // 將CharBuffer中的字符序列轉(zhuǎn)換成字節(jié)序列 ByteBuffer bbuff = cnEncoder.encode(cbuff); // 循環(huán)訪問ByteBuffer中的每個(gè)字節(jié) for (int i = 0; i < bbuff.capacity(); i++) { System.out.print(bbuff.get(i) + " "); } // 將ByteBuffer的數(shù)據(jù)解碼成字符序列 System.out.println("\n" + cnDecoder.decode(bbuff)); }}
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

由于使用UTF-8和GBK編碼在把字符CharBuffer轉(zhuǎn)成ByteBuffer時(shí)候分配的字節(jié)容量capacity不一樣導(dǎo)致的,如果你設(shè)置的編碼是UTF-8,那么在在執(zhí)行cnEncoder.encode(cbuff),分配字節(jié)容量的源碼如下所示:


int n = (int)(in.remaining() * averageBytesPerChar());ByteBuffer out = ByteBuffer.allocate(n);

UTF-8編碼情況下,分配的時(shí)候,capacity會(huì)比limit大,而GBK下,capacity和limit是一樣大。所以UTF-8情況下,在遍歷字節(jié)序列的時(shí)候, 會(huì)出現(xiàn)溢出,而GBK不會(huì)。所以,你在循環(huán)遍歷字節(jié)序列的時(shí)候把判斷條件bbuff.capacity()換成bbuff.limit()就可以了。


查看完整回答
反對(duì) 回復(fù) 2021-11-06
?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

因?yàn)閑clipse默認(rèn)的是GBK,GBK和UTF-8貌似有長度上的區(qū)別

查看完整回答
反對(duì) 回復(fù) 2021-11-06
  • 2 回答
  • 0 關(guān)注
  • 553 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)