<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        js下用gb2312編碼解碼實現方法_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 20:46:40
        文檔

        js下用gb2312編碼解碼實現方法_javascript技巧

        js下用gb2312編碼解碼實現方法_javascript技巧:需求 在js中將中文用gb2312編碼。如,我編碼后應該是%CE%D2。 分析 大家知道,encodeURI和encodeURIComponent會用utf-8編碼,如我編碼后是%E6%88%91。據實驗,似乎沒有參數指定編碼的地方。只有另尋他法。 大致分析有如下幾種解決方案: 1
        推薦度:
        導讀js下用gb2312編碼解碼實現方法_javascript技巧:需求 在js中將中文用gb2312編碼。如,我編碼后應該是%CE%D2。 分析 大家知道,encodeURI和encodeURIComponent會用utf-8編碼,如我編碼后是%E6%88%91。據實驗,似乎沒有參數指定編碼的地方。只有另尋他法。 大致分析有如下幾種解決方案: 1

        需求
        在js中將中文用gb2312編碼。如,“我”編碼后應該是“%CE%D2”。

        分析
        大家知道,encodeURI和encodeURIComponent會用utf-8編碼,如“我”編碼后是“%E6%88%91”。據實驗,似乎沒有參數指定編碼的地方。只有另尋他法。
        大致分析有如下幾種解決方案:
        1. 用js創建一個隱藏的iframe并指定其為gb2312編碼,將需要轉換的文本放到iframe的form的一個input中,將form指定為get方式并提交,
        然后獲取其url并解析,應該可以得到其gb2312編碼后的文本。
        2. 用ajax傳到服務器上編碼,然后傳回來。
        3. 在js中創建一個gb2312編碼表。

        實現
        第一種方案個人感覺太折騰,需要在多個不同的瀏覽器下測試。
        第二種方案需要有服務器配合。
        下面是第三種方案的實現:
        最開始打算使用數組存儲編碼表,后來為了減小js文件大小,改用string來存儲。
        于是,js代碼如下:

        代碼
        代碼如下:
        function encodeToGb2312(str){
        var strOut="";
        for(var i = 0; i < str.length; i++){
        var c = str.charAt(i);
        var code = str.charCodeAt(i);
        if(c==" ") strOut +="+";
        else if(code >= 19968 && code <= 40869){
        index = code - 19968;
        strOut += "%" + z.substr(index*4,2) + "%" + z.substr(index*4+2,2);
        }
        else{
        strOut += "%" + str.charCodeAt(i).toString(16);
        }
        }
        return strOut;
        }
        function decodeFromGb2312(str){
        var strOut = '';
        for (var i=0;ivar c = str.charAt(i);
        // +是空格
        if (c == '+'){
        strOut += ' ';
        }
        // a,b,c,1,2等,非%開頭的,直接返回本身
        else if (c != '%'){
        strOut += c;
        }
        // %開頭
        else{
        i++;
        var nextC = str.charAt(i);
        // 數字,則不是漢字
        if (!isNaN(parseInt(nextC))){
        i++;
        strOut += decodeURIComponent(c+nextC+str.charAt(i));
        }
        else{
        var x = new String();
        try
        {
        var code = str.substr(i,2)+str.substr(i+3,2);
        i = i + 4;
        var index = -1;
        while ((index = z.indexOf(code,index+1)) != -1){
        if (index%4 == 0){
        strOut += String.fromCharCode(index/4+19968);
        break;
        }
        }
        }catch(e){}
        }
        }
        }
        return strOut;
        }
        var z='{0}';

        (這里沒考慮中文標點,主要是看unicode里中文標點和日韓的標點混在一起,分布在幾個地方,就懶得弄了。誰弄了可以發我一份,謝了。)
        最后用.NET生成z處的代碼:

        代碼
        代碼如下:
        StringBuilder sb = new StringBuilder();
        string strFormat = @"...z = '"; // 前面的js代碼
        const int MinHanzi = 19968;
        const int MaxHanzi = 40869;
        for (int i = MinHanzi; i < MaxHanzi + 1; i++)
        {
        byte[] bytes = Encoding.GetEncoding("gb2312").GetBytes(((char)i).ToString());
        sb.AppendFormat("{0}{1}", Convert.ToString(bytes[0], 16).ToUpper(), Convert.ToString(bytes[1], 16).ToUpper());
        }
        string str = strFormat + sb.ToString(0, sb.Length - 1) + "';";
        System.IO.File.WriteAllText(@"F:\encodeGb2312.js", str, Encoding.ASCII);

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js下用gb2312編碼解碼實現方法_javascript技巧

        js下用gb2312編碼解碼實現方法_javascript技巧:需求 在js中將中文用gb2312編碼。如,我編碼后應該是%CE%D2。 分析 大家知道,encodeURI和encodeURIComponent會用utf-8編碼,如我編碼后是%E6%88%91。據實驗,似乎沒有參數指定編碼的地方。只有另尋他法。 大致分析有如下幾種解決方案: 1
        推薦度:
        標簽: 方法 使用 實現
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人免费的性色视频| 99久久免费国产特黄| 免费国产污网站在线观看15| 免费在线不卡视频| 久久精品熟女亚洲av麻豆| 性xxxx视频播放免费| 亚洲欧美成人av在线观看| 免费可以看黄的视频s色| 亚洲videos| 免费看的成人yellow视频| 亚洲AV无码国产剧情| 免费国产成人午夜私人影视| 国产精品亚洲专区无码牛牛 | 免费的涩涩视频在线播放| 亚洲精品福利你懂| 日韩一区二区免费视频| 美女免费视频一区二区三区| 亚洲人妻av伦理| 97国免费在线视频| 亚洲人成影院在线| 57PAO成人国产永久免费视频| 亚洲中文字幕无码中文| 国产一区二区三区在线观看免费| 一区二区三区在线观看免费| 亚洲中久无码永久在线观看同| 成人无码a级毛片免费| 久久久无码精品亚洲日韩京东传媒| 亚洲毛片在线免费观看| 亚洲一线产区二线产区区| 免费人妻无码不卡中文字幕18禁| 亚洲免费在线观看| 99亚洲精品高清一二区| 日韩免费a级在线观看| 一级一看免费完整版毛片| 亚洲av无码av制服另类专区| 无码精品A∨在线观看免费 | 深夜a级毛片免费视频| 亚洲精品蜜桃久久久久久| 最近在线2018视频免费观看| 久久精品亚洲日本波多野结衣 | 亚洲精品国产福利片|