<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
        主站蜘蛛池模板: 91免费人成网站在线观看18| 黄页免费在线观看| 精品熟女少妇AV免费观看| 亚洲自偷自拍另类12p| 久艹视频在线免费观看| 亚洲国产一区二区a毛片| 99免费观看视频| 亚洲黄网站wwwwww| 国产免费的野战视频| 亚洲乱码无限2021芒果| 免费观看黄网站在线播放| 91在线亚洲综合在线| 日韩高清免费观看| 特a级免费高清黄色片| 国产日韩成人亚洲丁香婷婷| 精品熟女少妇aⅴ免费久久 | 国产亚洲自拍一区| 免费看少妇高潮成人片| 久久精品国产亚洲av麻豆小说 | 国产亚洲精品VA片在线播放| 免费被黄网站在观看| 白白色免费在线视频| 久久精品国产精品亚洲下载| 一级毛片免费观看| 亚洲熟妇AV一区二区三区宅男 | 亚洲午夜无码久久久久| 一级毛片在线免费看| 亚洲一区二区三区免费观看| 国产裸模视频免费区无码| 一区在线免费观看| 亚洲经典在线观看| 日韩毛片无码永久免费看| 中文字幕在线观看免费| 亚洲AV综合色区无码二区偷拍| 国产乱子伦片免费观看中字| 三级网站在线免费观看| 国产精品亚洲片夜色在线| 亚洲一级Av无码毛片久久精品| 一区二区三区四区免费视频| 亚洲国产精品嫩草影院| 亚洲va久久久噜噜噜久久天堂 |