• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于C#的字符編碼映射系統(tǒng)

      2010-02-23 07:27:26童天添
      陜西科技大學學報 2010年4期
      關(guān)鍵詞:字符集跨平臺控件

      童天添

      (江蘇科技大學學報編輯部, 江蘇 鎮(zhèn)江 212003)

      0 引 言

      任何計算機軟件都需要在指定的字符編碼支持下才能運行,在互聯(lián)網(wǎng)環(huán)境下,涉及跨國用戶的計算機軟件,更應(yīng)該注意它使用了怎樣的字符代碼體系.計算機用戶在使用計算機時常會遇到字符“亂碼”,特別是在涉外的計算機通訊中尤為常見[1-3].當今中國有GB2312簡體中文字符集,日本有Shift-JIS字符集,國際上類似這樣一個國家對應(yīng)一套或數(shù)套字符集的現(xiàn)象很多.Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案,它用數(shù)字0~0x10FFFF來映射這些字符,最多可以容納1 114 112個字符,或者說有1 114 112個碼位.碼位就是可以分配給字符的數(shù)字.UTF-8,UTF-16,UTF-32都是將數(shù)字轉(zhuǎn)換到程序數(shù)據(jù)的編碼方案.Unicode字符集簡寫為UCS(Unicode Character Set).Unicode標準有UCS-2,UCS-4.UCS-2用兩個字節(jié)編碼,UCS-4用4個字節(jié)編碼.由于 Unicode 版本的發(fā)展原因,很多瀏覽器只能顯示 UCS-2 的完整字符集,即現(xiàn)在使用的 Unicode 版本中的一個子集.為此,本文以雙字節(jié)編碼空間為研究對象,用Visual Studio 2005 中的C#語言編寫了字符編碼映射系統(tǒng),分別展示出GB2312 和UCS-2字符集中的所有字符,結(jié)果證明了Unicode字符集在當前系統(tǒng)資源充足的情況下,相比其他字符集具有跨語言、跨平臺進行文本轉(zhuǎn)換、處理的優(yōu)越性.該系統(tǒng)為進一步研究實現(xiàn)期刊采編系統(tǒng)等軟件的國際化奠定了基礎(chǔ).

      1 字符編碼映射系統(tǒng)的理論分析與設(shè)計

      1.1 UCS-2字符集的區(qū)域劃分

      UCS-2字符集用一個16位的值來表示每個字符,它已經(jīng)為歐洲拉丁文、擴充拉丁文、阿拉伯文、泰文、日文、韓文等外文字母定義了Unicode代碼點.該字符集中還包含了大量的標點符號、數(shù)學符號、技術(shù)符號、箭頭、裝飾標志、區(qū)分標志和其他許多字符.現(xiàn)在USC-2字符集的65 536個代碼絕大部分已經(jīng)被分配了字符,其中中國漢字、日文漢字、韓文就占用了超過一半的代碼[4],這65 536個字符可以分成不同的區(qū)域.表1顯示了其中的部分區(qū)域的代碼范圍以及分配給這些區(qū)域的字符.

      表1 UCS-2字符集區(qū)域分布

      1.2 Unicode字符集轉(zhuǎn)換格式

      Unicode字符集轉(zhuǎn)換格式(UCS Transformation Format,UTF)用來規(guī)定怎樣將Unicode定義的數(shù)字轉(zhuǎn)換成程序數(shù)據(jù),包括:UTF-8,UTF-16,UTF-32.例如,“漢字”對應(yīng)的數(shù)字是0x6c49和0x5b57,而編碼的程序數(shù)據(jù)是:

      BYTE data_UTF8[] = {0xE6, 0xB1, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8編碼

      WORD data_ UTF16[] = {0x6c49, 0x5b57}; // UTF-16編碼

      DWORD data_ UTF32[] = {0x00006c49, 0x00005b57}; // UTF-32編碼

      把Unicode編碼記作U.對于U<0x10000,UTF-8,UTF-16,UTF-32的編碼規(guī)則分別如下:

      (1)UTF-8以字節(jié)為單位對Unicode進行編碼,從U到UTF-8的編碼方式如下:

      U║ UTF-8 字節(jié)流(二進制)

      0x0000~0x007F ║ 0xxxxxxxB

      0x0080~0x07FF ║ 110xxxxxB10xxxxxxB

      0x0800~0xFFFF ║ 1110xxxxB10xxxxxxB10xxxxxxB

      (2)UTF-16編碼以16位無符號整數(shù)為單位.U的UTF-16編碼就是U對應(yīng)的16位無符號整數(shù).

      (3)UTF-32編碼以32位無符號整數(shù)為單位.U的UTF-32編碼就是其對應(yīng)的32位無符號整數(shù).

      1.3 字符集的映射

      圖1 字符生成流程圖

      圖1為字符編碼映射系統(tǒng)中的字符生成流程圖.從開始到結(jié)束,完成一套雙字節(jié)編碼空間字符集的生成過程,所使用的Unicode字符集轉(zhuǎn)換格式為UTF-16.圖2 為字符編碼映射系統(tǒng)顯示USC-2字符集的運行截圖.程序用dataGridView控件的單元格存放生成的字符.dataGridView控件每行存放32個字符,列頭標以0x00~0x1F連續(xù)編號.以UCS-2字符集為例,UCS-2字符集共有65 536個碼位,所以dataGridView控件的總行數(shù)為65 535/16=4 096行,行頭標以0x0000~0xFFE0非連續(xù)編號.點擊“顯示USC-2字符集”按紐和“顯示GB2312字符集”按紐,分別在dataGridView控件中顯示相應(yīng)字符集的所有字符.

      顯示USC-2字符集的程序代碼如下:

      private void button1_Click(object sender, EventArgs e)

      {

      byte[] by16=new byte[2];

      for (int i = 0; i < 65536; i++)

      {

      by16[0] = Convert.ToByte(i% 256); //i取余給底字節(jié)

      by16[1] = Convert.ToByte(i/256); //i取整給高字節(jié)

      dataGridView1[i% 32, i/32].Value = ncoding.Unicode.GetString(by16);//UNICODE字符賦給單元格

      }

      }

      顯示GB2312字符集的程序代碼如下:

      private void button2_Click(object sender,EventArgs e)

      {

      byte[] by16 = new byte[2];

      for (int i = 0; i < 65536; i++)

      {

      by16[0] = Convert.ToByte(i% 256); //i取余給底字節(jié)

      by16[1] = Convert.ToByte(i/256); //i取整給高字節(jié)

      dataGridView1[i% 32, i/32].Value =

      Encoding.GetEncoding(“GB2312”).GetString(by16); //GB2312字符賦給單元格

      }

      }

      圖2 字符編碼映射系統(tǒng)運行截圖

      2 結(jié)果的分析

      下面是通過本文設(shè)計的字符編碼映射系統(tǒng)生成的一部分Unicode字符,最前面的十六進制數(shù)字是后面32個字符中第一個字符的編碼.

      通過了解Unicode的設(shè)計初衷和用設(shè)計的程序驗證USC-2字符集中的字符,我們可以知道Unicode是一種在計算機上使用的字符編碼,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求.Unicode標準有UCS-2和UCS-4.UCS-2用兩個字節(jié)編碼,UCS-4用4個字節(jié)編碼.Unicode還在不斷的發(fā)展,Unicode 4.1.0版本于2005年3月31日推出.另外,5.0 Beta版本于2005年12月12日推出,5.2版本于2009年10月1日正式推出.

      Unicode技術(shù)有其廣泛的應(yīng)用價值,它是今后軟件設(shè)計中字符編碼方式的一種趨勢.本文所設(shè)計的映射系統(tǒng)是進行軟件國際化研究工作的基礎(chǔ).以學報采編系統(tǒng)為例,我國科技期刊的編委和審稿幾乎均局限在國內(nèi),難以爭取境外稿源,也不可能在國際市場上暢銷[5].從采編系統(tǒng)的技術(shù)層面分析,編委、審稿人隊伍的國際化,稿源的國際化,銷售市場的國際化,必然要求能兼容世界各國語言的統(tǒng)一編碼標準,這正是Unicode編碼標準所能滿足我們的.

      3 結(jié)束語

      (1)本文以雙字節(jié)編碼空間為研究對象,用其編碼空間映射出GB2312 和USC-2字符集中的所有字符,所用的方法具有通用性.對于其他的字符集,如日文Shift-JIS字符集,用該方法同樣可以獲得相應(yīng)字符集中的所有字符.

      (2)本文所設(shè)計的字符編碼映射系統(tǒng)是研究軟件系統(tǒng)跨語言、跨平臺運用的基礎(chǔ).它作為一個工具,在今后的相關(guān)軟件的研發(fā)中必將經(jīng)常使用到.

      (3)Unicode具有跨語言、跨平臺進行文本轉(zhuǎn)換、處理的特性.雖然在USC-4標準中每個字符有4個字節(jié)編碼,較其他編碼方案更加消耗存儲空間,但在當前系統(tǒng)資源充足的情況下,它將是今后軟件中字符編碼的一種趨勢.

      參考文獻

      [1]高 煒, 劉 偉,趙長青.基于Windows的中文軟件移植到UNICODE的方法研究[J].軟件導刊,2008,(5):19-20.

      [2]張愛優(yōu).圖書館自動化管理系統(tǒng)的新型編碼系統(tǒng)[J].圖書館雜志,2001,20(12):19-21.

      [3]馬玉芝, 李 俊.基于UNICODE的多民族文字處理在移動終端上的實現(xiàn)[J].計算機應(yīng)用,2006,26(1):234-236.

      [4] 李建文,張成現(xiàn).實用網(wǎng)絡(luò)通信編程技術(shù)[M]. 北京:北京郵電大學出版社,2006.

      [5]余麗清.我國科技期刊國際化探討[J].中國科技期刊研究,2006,17(3):495-497.

      猜你喜歡
      字符集跨平臺控件
      MySQL數(shù)據(jù)庫字符集的問題研究
      ORACLE字符集問題的分析
      跨平臺APEX接口組件的設(shè)計與實現(xiàn)
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      ORACLE數(shù)據(jù)庫字符集問題及解決方法
      醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫中導入數(shù)據(jù)中文亂碼的解決技術(shù)
      基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
      基于OPC跨平臺通信的電機監(jiān)測與診斷系統(tǒng)
      基于B/S的跨平臺用戶界面可配置算法研究
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      凉城县| 六枝特区| 成安县| 鄂尔多斯市| 成武县| 乐安县| 区。| 建昌县| 涿鹿县| 金平| 滨州市| 桂东县| 深水埗区| 巴南区| 保靖县| 收藏| 宣城市| 舒兰市| 勐海县| 怀柔区| 台山市| 密云县| 英吉沙县| 建德市| 时尚| 澳门| 宁强县| 喀喇沁旗| 奉化市| 台中市| 潼关县| 灵武市| 桂平市| 辉县市| 九江市| 中山市| 枣阳市| 临高县| 西畴县| 钦州市| 新宾|