程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB6內置的內碼轉換功能

VB6內置的內碼轉換功能

編輯:VB綜合教程
嘿嘿,看到這個題目,想必嚇了一大跳吧,或者是擺出一副不相信的表情?不用著急,請聽我慢慢道來。
  話說這個VB6,很是無恥,居然內置了支持Unicode的功能,也就是說,當你讀入一個字符串時,它根據本地缺省語言的對應關系將之轉換為Unicode,輸出時,再從Unicode轉換為本地編碼。一方面,它當然方便啦,隨便出個什麼語言的版本都好方便的,而且在Unicode的系統上,如NT,那它可就如魚得水,Unicode畢竟是軟件發展的方向,像現在中文Win9X使用的GBK內碼,實際上就是向著Unicode走了一大步。可是在另一方面,這種支持實際上極大地延緩了字符串的處理時間!想想看,如果我們從文件裡讀一行並顯示,本來是很簡單的事情,可是在VB6裡面,實際上多了一段轉換到Unicode的時間,如果我們用字符串從原文件裡讀一行,然後分析,再寫到目的文件裡去,實際上就多了兩重的時間(本地到Unicode,unicode到本地)。當然對於這種小事,高手們想必也都有處理的辦法(如用byte數組來代替字符串)
  說了這麼一大堆Unicode的壞話,還沒說到正題呢,由於VB6內置對Unicode的支持,而Unicode裡面分別和GBK以及Big5漢字都有對應關系,所以要實現轉換也只是一件小事,下面我們就有請本次女主角出場。(嘩嘩嘩嘩……掌聲不絕。)
  函數strConv!這個美眉大家可能在VB5裡面也都見過的,她有一些保镖,可以幫她把字符串在Unicode和本地編碼之間轉換,而在VB6裡面呢,strConv又多了一個保镖!大家請仔細看:
  strConv(string,conversion)`VB5
  StrConv(string,conversion,LCID)`VB6
  string呢,就是預轉換的字符串了(提示一下,也可以使用byte數組)。
  conversion:是一個整數,只決定轉換方式,VB裡定義了一些常量,如VBFromUnicode、VBUnicode等等,這些不用我解釋大家應該也明白了吧。
  LCID:哈,這可是VB6新加入的參數了,長整數,可以指定編碼方式,如&H404,即Big5碼,&H804即GBK碼,合理運用這個參數,就可以寫出一個非常簡單的內碼轉換工具!
  什麼?你還不明白,哎,就把源碼給你看看吧。
  DimiReadNumberAsInteger`讀文件號
  DimiWriteNumberAsInteger`寫文件號
  Dimmem()AsByte`byte數組
  DimstrFileNameAsString`文件名
  DimlLengthAsLong`文件長度
  
  `將文件內容讀入membyte數組
  iReadNumber=FreeFile
  strFileName=TextFileName.Text
  lLength=FileLen(strFileName)
  ReDimmem(lLength)AsByte
  OpenstrFileNameForBinaryAs#iReadNumber
  Get#iReadNumber,,mem
  Close#iReadNumber
  
  `將mem數組轉換為Big5碼所對應的Unicode碼
  mem=StrConv(mem,vbUnicode,&H404)
  `再將Unicode碼轉換為GBK編碼
  mem=StrConv(mem,vbFromUnicode,&H804)
  
  `寫到源文件裡去
  iWriteNumber=FreeFile
  KillstrFileName
  OpenstrFileNameForBinaryAs#iWriteNumber
  Put#iWriteNumber,,mem
  Close#iWriteNumber
  `結束
  (筆者用的是中文VB6Professional版+servicepack3。)
  怎麼樣,方便吧?短短幾行就把Big5碼轉換到GBK了。
  不過方便是方便了,但是呢,也有它自己的缺陷,老實說,用這種方法來轉換GBGBK到Big5碼是非常好的,可是把Big5碼轉過來的話,結果居然是繁體的!看起來真的是很不爽,哎,這也沒有辦法,Unicode裡面就是這個對應關系;此外呢,這樣轉換畢竟是走了兩步路,所以呢,從理論上來說,比別的轉碼軟件慢了一倍!
  但是這樣轉過來可是有兩大好處的,一,不會有錯誤的碼,這可是國際標准喲,你想什麼?二,不會有缺字,就像現在的很多轉碼軟件都是從Big5轉到GB碼,想想看15000字轉到六七千字,一一映射,沒有缺字才怪!->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved