麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#中字符串編碼處理

2020-01-24 03:33:38
字體:
供稿:網(wǎng)友

GB2312是簡體中文系統(tǒng)的標(biāo)準(zhǔn)編碼 用“區(qū)” 跟“位”的概念表示 稱之為區(qū)位碼
區(qū)指代大的范圍 位相當(dāng)于偏移量。
每個漢字占兩個字節(jié)
高位字節(jié)”的范圍是0xB0-0xF7,“低位字節(jié)”的范圍是0xA1-0xFE。
它的規(guī)律好像是按拼音a到z的順序排列的
“啊”字是GB2312之中的第一個漢字,它的區(qū)位碼就是1601
為此我們現(xiàn)在用代碼的方式輸出一個漢字
c#下是little字節(jié)序 b0跑后面去了。

復(fù)制代碼 代碼如下:

 ushort u = 0xa1b0;
 byte[] chs =BitConverter.GetBytes(u);
 Console.Write(Encoding.GetEncoding("GB2312").GetString(chs));

屏幕上輸出的是漢字“啊”
但是注意并不代表 寫個循環(huán)從0xbA1 到0xf7fe就可以輸出所有的漢字,這個很簡單比如高位從1到9 低位從1到9 只有81種組合。
并不代表99-11就是結(jié)果 這么二的問題 暈。實(shí)際上通過這種方式漢字的個數(shù)總共是6768個,理解了區(qū)位碼的概念后你就知道怎樣去處理gb2312的漢字編碼了。
下面我們就用這種方式來輸出所有的漢字

復(fù)制代碼 代碼如下:

//gb2312
 //B0-F7,低字節(jié)從A1-FE
 //byte hi = 0xB0;
 //byte lo = 0xA1;
 for (byte i = 0xB0; i <= 0xF7; i++)
 {
     for (byte j = 0xA1; j <= 0xFE; j++)
     {
         //byte t = (byte)(j | (byte)0x01);
         Console.Write(Encoding.GetEncoding("GB2312").GetString(new byte[] { i, j }));
     }
 }

關(guān)于GB2312的解釋://www.companysz.com/article/34630.htm

ASCII是美國信息交換標(biāo)準(zhǔn)碼 他是從0~127,一個字節(jié)8位最高是255 就是說一個字節(jié)都用不完。
GB2312里也有字母 稱之為全角字符  ,gb2312里也包括ascii碼稱之為半角字符。
全角字符看上去怪怪的 感覺有點(diǎn)不一樣 就像這樣 全角: A半角:A  全角:a 半角:a
全角字符除了在文字系統(tǒng)里用到?jīng)]什么實(shí)際作用。
全角字符的第一個字節(jié)總是被置為163,而第二個字節(jié)則是相同半角字符碼加上128(不包括空格)。
如半角A為65,則全角A則是163(第一個字節(jié))、193(第二個字節(jié),128+65)。
知道這個規(guī)律 那么我們也可以遍歷處所有ascii對應(yīng)的全角字符:

復(fù)制代碼 代碼如下:

/**
  *實(shí)際上,全角字符的第一個字節(jié)總是被置為163,
  *而第二個字節(jié)則是相同半角字符碼加上128(不包括空格)。
  *如半角A為65,則全角A則是163(第一個字節(jié))、193(第二個字節(jié),128+65)。
  */
 for (byte k = 0x00; k < 0x7f; k++)
 {
     byte[] ch = new byte[2];
     ch[0] = 163;
     ch[1] = (byte)(128 + k);
     Console.Write(Encoding.GetEncoding("GB2312").GetString(ch));
 }

winXp下文本文件默認(rèn)的保存編碼是ansi ,注意 這個ansi 他的概念跟GB2312又有不同,除此之外還有unicode 、utf-8
他們之間的關(guān)系是:
不同的國家和地區(qū)制定了不同的標(biāo)準(zhǔn),由此產(chǎn)生了 GB2312, BIG5, JIS 等各自的編碼標(biāo)準(zhǔn)。
這些使用 2 個字節(jié)來代表一個字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。
在簡體中文系統(tǒng)下,ANSI 編碼代表 GB2312 編碼,在日文操作系統(tǒng)下,ANSI 編碼代表 JIS 編碼
C#進(jìn)行文本讀取時新同學(xué)最容易出現(xiàn)不理解為什么文本文件讀取時是亂碼

復(fù)制代碼 代碼如下:

 StreamReader sr = new StreamReader(Application.StartupPath + @"/config.txt");
 string line;
 while ((line = sr.ReadLine()) != null)
 {
     Console.WriteLine(line);
 }

因為讀取的方式 也就是解碼的方式跟文本存儲時不一樣,所以初始化streamReader時最好指定編碼,Default即ANSI
復(fù)制代碼 代碼如下:

 StreamReader sr = new StreamReader(Application.StartupPath + @"/config.txt", System.Text.Encoding.Default);

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美一级电影网 | 在线日韩av电影 | 成人免费福利视频 | 国产亚洲综合一区二区 | 日韩免费黄色 | 精品国产欧美一区二区 | 欧美三级日本三级少妇99 | 国产午夜精品一区二区三区免费 | 视频一区二区三区在线播放 | 成人毛片网 | 一级电影免费看 | 亚洲一区在线免费视频 | 亚洲综合视频网站 | 欧美亚洲免费 | 在线看一级片 | 美女福利视频国产 | 妇子乱av一区二区三区 | 久久久电影电视剧免费看 | 可以看毛片的网址 | 精品中文字幕在线播放 | 日本成人高清视频 | 国产在线看一区 | 欧美日韩夜夜 | 成人在线视频免费播放 | 在线播放免费人成毛片乱码 | 日韩视频一二三 | www.热 | 欧美黑大粗硬毛片视频 | 精品国产91久久久久久浪潮蜜月 | 97干在线| 欧美a久久| 宅男噜噜噜66国产在线观看 | 欧美精品成人一区二区在线观看 | 欧美成人鲁丝片在线观看 | 美女亚洲 | av免费大全| 国产一区二区欧美 | 一区二区三区视频在线播放 | 国产91精品亚洲精品日韩已满 | 成人做爽爽爽爽免费国产软件 | 久草在线手机视频 |