最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用javascript實(shí)現(xiàn)gb2312轉(zhuǎn)utf-8的腳本

 更新時(shí)間:2007年05月16日 00:00:00   作者:  
信息交換用漢字編碼字符集-基本集
漢字標(biāo)準(zhǔn)交換碼共分兩級(jí)。第一級(jí)為常用字,有3755字,按漢語(yǔ)拼音字母順序排列,第二級(jí)為次常用字,有3008字,按部首排列。GB2312的編碼范圍為2121H-777EH.
UNICODE 是兩字節(jié)的全編碼,對(duì)于ASCII字符它也使用兩字節(jié)表示。代碼頁(yè)是通過(guò)高字節(jié)的取值范圍來(lái)確定是ASCII字符,還是漢字的高字節(jié)。如果發(fā)生數(shù)據(jù)損壞, 某處內(nèi)容破壞,則會(huì)引起其后漢字的混亂。UNICODE則一律使用兩個(gè)字節(jié)表示一個(gè)字符,最明顯的好處是它簡(jiǎn)化了漢字的處理過(guò)程。
關(guān)于編碼的文章可以參考:
http://blog.iyi.cn/tech/2005/10/unicode_2.html
http://blog.iyi.cn/tech/2005/10/unicode.html

百度的頁(yè)面是gb2312的,URL編碼自然也是從gb轉(zhuǎn)換而來(lái),比如“一”這個(gè)字,百度轉(zhuǎn)換的結(jié)果是D2%BB,而從Utf-8轉(zhuǎn)換來(lái)的結(jié)果是%E4%B8%80比如google(gb是2字節(jié)編碼,utf-8是3字節(jié)變長(zhǎng)編碼)
可以用javascript的encodeURI和decodeURI來(lái)得到這些結(jié)果,設(shè)置頁(yè)面編碼就可以看到不同結(jié)果了。
在網(wǎng)上找,也沒(méi)找到現(xiàn)成的轉(zhuǎn)換程序,只得自己寫(xiě)。還好網(wǎng)上不缺gb-utf的對(duì)照表,修改了一下就可以用了:gb-utf.txt
這個(gè)對(duì)照表是將gb字節(jié)編碼轉(zhuǎn)到utf的16進(jìn)制編碼,而不是字節(jié)編碼。
javascript中escape和unescape是轉(zhuǎn)換16進(jìn)制編碼用的,因此gb漢字到utf漢字的轉(zhuǎn)換思路是:encodeURI("gb漢字"),到對(duì)照表中查找utf的16進(jìn)制編碼,unescape("16進(jìn)制utf編碼"),得到utf漢字。
中間那一步最關(guān)鍵,我的轉(zhuǎn)換只用到了這一步,其他兩步直接調(diào)用那兩個(gè)函數(shù)就可以了。下面是轉(zhuǎn)換程序: 
 
復(fù)制代碼 代碼如下:

function genCodeStr(){ 
    var codeRE = new RegExp("'(.*)' : '(.*)'","gi"); 
    var tempStr,codeStr = ""; 
    var myReader = new Reader(); 
    myReader.loadFile('inc/gb2312_utf.txt');//這里改成你的對(duì)照表存放的路徑 
    while(!myReader.fStream.atEndofLine) { 
        tempStr = new String(myReader.fStream.readLine()); 
        codeStr += tempStr.replace(codeRE,"$1") + ":" + tempStr.replace(codeRE,"$2") + ":"; 
    } 
    Application("codeData") = codeStr; 

function getCodeStr(){ 
    var codeStr = new String(Application("codeData")); 
    if(codeStr.indexOf("%a1%a1") == -1){ 
        genCodeStr(); 
    } 
    return new String(Application("codeData")); 

function gb2utf(gbStr){ 
    var codeStr = getCodeStr(); 
    var codeRE = new RegExp("(%..%..)","gi"); 
    var replaceRE = new RegExp("(%..%..)","i"); 
    var gbCode; 
    var utfCode; 
    var gbStart; 
    while((codeRE.lastIndex < gbStr.length) && replaceRE.test(gbStr)){ 
        codeRE.exec(gbStr); 
        gbCode = new String(RegExp.$1); 
        gbStart = new Number(codeStr.indexOf(gbCode.toLowerCase())); 
        var utfStart = 0; 
        if(gbStart != -1){ 
            utfStart= gbStart + 7; 
            utfCode = codeStr.substring(utfStart,utfStart + 6); 
        }else{ 
            utfCode = "%u3000"; 
        } 
        gbStr = gbStr.replace(replaceRE,utfCode); 
    } 
    return gbStr; 

function Reader() {                        //Class        Reader() 
    this.fso;                            //Private    fso 
    this.fUri;                            //Private    fUri 
    this.fStream;                        //Private    fStream 
    try{ 
        this.fso = new ActiveXObject("Scripting.FileSystemObject"); 
    }catch(exception) { 
        throw exception; 
    } 
    this.loadFile = function(file) {        //Public        loadFile(file) 
            this.fUri = Server.mappath(file); 
            //var fStream = fso.CreateTextFile(tfolder,true,false); 
            //fStream.WriteLine('test'); 
            if(this.fso.fileExists(this.fUri)){ 
                this.fStream = this.fso.openTextFile(this.fUri); 
            }else{ 
                Response.write('file dos not exist'); 
            } 
    } 
    this.readLineN = function(num) { 
        var i = 1; 
        while(i < num && !this.fStream.atEndOfLine) { 
            this.fStream.skipLine(); 
            i++ 
        } 
        return this.fStream.readLine(); 
    } 
    this.closeFile = function() { 
        fStream.Close(); 
        fso.Close; 
    } 
}  

對(duì)照表就是gb-utf.txt了,你自己改一下讀取路徑即可。

還需要注意的是,上面的程序是需要在服務(wù)器端運(yùn)行的,因?yàn)樯婕暗轿募僮鳌?
javascript客戶(hù)端程序請(qǐng)看

相關(guān)文章

  • 微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序

    微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序

    最近在寫(xiě)小程序過(guò)程中遇到一個(gè)拖拽排序需求,上網(wǎng)一頓搜索未果,遂自行實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 分享一些不常見(jiàn)卻很實(shí)用的JS技巧

    分享一些不常見(jiàn)卻很實(shí)用的JS技巧

    有些代碼,需要的時(shí)候能寫(xiě)的出來(lái),但是也需要時(shí)間,如果有的東西長(zhǎng)時(shí)間不接觸,再次看的時(shí)候也會(huì)感覺(jué)很陌生,這篇文章主要給大家介紹了一些不常見(jiàn)卻很實(shí)用的JS技巧,既可以作為一個(gè)知識(shí)的積累,又可以作為閑暇時(shí)打發(fā)時(shí)間寫(xiě)寫(xiě)代碼的記錄,需要的朋友可以參考下
    2021-11-11
  • JS在瀏覽器中存儲(chǔ)用戶(hù)名和密碼的操作方法

    JS在瀏覽器中存儲(chǔ)用戶(hù)名和密碼的操作方法

    當(dāng)用戶(hù)進(jìn)行登錄頁(yè)后,直接從localStorage中把用戶(hù)名和密碼取出來(lái),填充到表單里,對(duì)用戶(hù)體驗(yàn)來(lái)說(shuō)十分不錯(cuò),今天通過(guò)本文給大家分享JS在瀏覽器中對(duì)用戶(hù)名和密碼進(jìn)行存儲(chǔ),需要的朋友可以參考下
    2023-06-06
  • 在JavaScript中監(jiān)聽(tīng)I(yíng)ME鍵盤(pán)輸入事件

    在JavaScript中監(jiān)聽(tīng)I(yíng)ME鍵盤(pán)輸入事件

    在 JavaScript 中監(jiān)聽(tīng)用戶(hù)的鍵盤(pán)輸入是很容易的事情,但用戶(hù)一旦使用了輸入法,問(wèn)題就變得復(fù)雜了。
    2011-05-05
  • 旺旺在線(xiàn)客服代碼 旺旺客服代碼生成器

    旺旺在線(xiàn)客服代碼 旺旺客服代碼生成器

    很多朋友想在網(wǎng)站上插入自己的阿里旺旺在線(xiàn)聯(lián)系圖片,就像是和QQ一樣,小編為大家詳細(xì)講解了旺旺在線(xiàn)客服代碼以及旺旺客服代碼生成器,希望能夠幫助到大家。
    2018-01-01
  • JavaScript 事件代理需要注意的地方

    JavaScript 事件代理需要注意的地方

    這篇文章主要介紹了JavaScript 事件代理需要注意的地方,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • 多個(gè)jquery.datatable共存,checkbox全選異常的快速解決方法

    多個(gè)jquery.datatable共存,checkbox全選異常的快速解決方法

    這篇文章主要介紹了多個(gè)jquery.datatable共存,checkbox全選異常的快速解決方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 前端JavaScript經(jīng)典之Promise詳解

    前端JavaScript經(jīng)典之Promise詳解

    Promise是為了解決回調(diào)地獄問(wèn)題而誕生的,它提供了優(yōu)雅的異步回調(diào)解決方案,這篇文章主要介紹了前端JavaScript經(jīng)典之Promise的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄

    uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄

    最近學(xué)到了一個(gè)比較好用的框架uni-app,可以做六端適配,學(xué)習(xí)一下,下面這篇文章主要給大家介紹了關(guān)于uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 基于JSONP原理解析(推薦)

    基于JSONP原理解析(推薦)

    下面小編就為大家推薦一篇基于JSONP原理解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論

克拉玛依市| 皋兰县| 怀集县| 临西县| 天津市| 宁城县| 新建县| 铁力市| 永修县| 五大连池市| 呼玛县| 阿克陶县| 井研县| 华安县| 曲松县| 建昌县| 仁化县| 唐海县| 古丈县| 泽普县| 木兰县| 汉寿县| 鲁甸县| 天津市| 石嘴山市| 林甸县| 利津县| 谷城县| 合江县| 大荔县| 华阴市| 隆德县| 同德县| 英超| 柳河县| 明水县| 泰来县| 沂水县| 洪泽县| 奈曼旗| 寻甸|