<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-55  評論-208  文章-0  trackbacks-0
    上次提出了一個ajax下載中文編碼問題,這次有遇到了ajax的上傳中文亂麻問題
    繼續bs各種編碼:)

    遇到問題:在使用xhr發出請求時,請求的url中參數帶中文,這時在后臺解析request得不到中文
    如:
    request = new ActiveXObject("Microsoft.XMLHTTP");
    request.open("GET", url);中我的url需要帶中文參數
    直接加參數是在后臺解析不出來的,所以我使用方法對url進行編碼轉換
    request?=?new?ActiveXObject("Microsoft.XMLHTTP");
    request.open(
    "GET",?uriFunc());

    //省略了對象定義
    //
    ..


    function?uriFunc()?{
    ????
    var?separator?=?"?";
    ????
    if?(uri.indexOf("?")?>=?0)
    ????????separator?
    =?"&";????????
    ????
    return?uri?+?separator?+?paramName?+?"="?+?escape(inputField.value,'utf-8');
    ??}
    然后就要在后臺進行解碼了
    以為沒法直接從request中取到編碼字符串,所以使用方法先取出url,然后再取出url的參數進行解碼
    取出url,以及取參數方法
    String?exfirstword?=?getUrlParameter(unescape(request.getQueryString()),"excludeuser");?
    ?

    ?
    public?String?getUrlParameter(String?str,String?targetstr){
    ??????????
    ??????????String[]?stringarray?
    =?str.split("&")??;
    ????????????
    ????????????
    for(int?i=0;i<stringarray.length;i++){
    ???????????????
    if(stringarray[i].startsWith(targetstr)){
    ???????????????????stringarray
    =stringarray[i].split("=");????
    ???????????????????
    break;
    ???????????????}
    ????????????}
    ????????????
    return?stringarray[1];
    ??????}

    ?
    //解碼方法
    ?
    //以下是對js的escape進行解碼
    ??????private?final?static?byte[]?val?=?{?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x00,?0x01,
    ??????????
    0x02,?0x03,?0x04,?0x05,?0x06,?0x07,?0x08,?0x09,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x0A,?0x0B,?0x0C,?0x0D,?0x0E,?0x0F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x0A,?0x0B,?0x0C,?0x0D,?0x0E,?0x0F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,
    ??????????
    0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F,?0x3F?};

    ?????
    ??????
    /**
    ???????*?解碼?說明:本方法保證?不論參數s是否經過escape()編碼,均能得到正確的“解碼”結果
    ???????*
    ???????*?
    @param?s
    ???????*?
    @return
    ???????
    */
    ??????
    public?static?String?unescape(String?s)?{
    ??????StringBuffer?sbuf?
    =?new?StringBuffer();
    ??????
    int?i?=?0;
    ??????
    int?len?=?s.length();
    ??????
    while?(i?<?len)?{
    ??????
    int?ch?=?s.charAt(i);
    ??????
    if?('A'?<=?ch?&&?ch?<=?'Z')?{?//?'A'..'Z'?:?as?it?was
    ??????sbuf.append((char)?ch);
    ??????}?
    else?if?('a'?<=?ch?&&?ch?<=?'z')?{?//?'a'..'z'?:?as?it?was
    ??????sbuf.append((char)?ch);
    ??????}?
    else?if?('0'?<=?ch?&&?ch?<=?'9')?{?//?'0'..'9'?:?as?it?was
    ??????sbuf.append((char)?ch);
    ??????}?
    else?if?(ch?==?'-'?||?ch?==?'_'?//?unreserved?:?as?it?was
    ??????||?ch?==?'.'?||?ch?==?'!'?||?ch?==?'~'?||?ch?==?'*'
    ??????
    ||?ch?==?'\''?||?ch?==?'('?||?ch?==?')')?{
    ??????sbuf.append((char)?ch);
    ??????}?
    else?if?(ch?==?'%')?{
    ??????
    int?cint?=?0;
    ??????
    if?('u'?!=?s.charAt(i?+?1))?{?//?%XX?:?map?to?ascii(XX)
    ??????cint?=?(cint?<<?4)?|?val[s.charAt(i?+?1)];
    ??????cint?
    =?(cint?<<?4)?|?val[s.charAt(i?+?2)];
    ??????i?
    +=?2;
    ??????}?
    else?{?//?%uXXXX?:?map?to?unicode(XXXX)
    ??????cint?=?(cint?<<?4)?|?val[s.charAt(i?+?2)];
    ??????cint?
    =?(cint?<<?4)?|?val[s.charAt(i?+?3)];
    ??????cint?
    =?(cint?<<?4)?|?val[s.charAt(i?+?4)];
    ??????cint?
    =?(cint?<<?4)?|?val[s.charAt(i?+?5)];
    ??????i?
    +=?5;
    ??????}
    ??????sbuf.append((
    char)?cint);
    ??????}?
    else?{?//?對應的字符未經過編碼
    ??????sbuf.append((char)?ch);
    ??????}
    ??????i
    ++;
    ??????}
    ??????
    return?sbuf.toString();
    ??????}

    這時候得到的exfirstword 就是正確的中文了
    問題解決

    posted on 2006-05-25 20:49 rocket 閱讀(1956) 評論(3)  編輯  收藏

    評論:
    # re: ajax中文上傳編碼問題 2006-05-31 12:33 | arlen
    感謝. 可是為什么直接用中文就不可以呢??? 我得到得中文是gbk編碼的, 但是沒法轉成utf-8. 覺得跟很多因素有關系  回復  更多評論
      
    # re: ajax中文上傳編碼問題 2006-06-01 09:54 | rocket
    @arlen

    是這樣的,在使用xhr發出請求時,實際上是向后臺發送了一個http的包,只不過這個http的包是封裝的xmlhttprequest,而xmlhttprequest對中文的編碼方式是gb2312的,這樣由于頁面用的是utf-8編碼,所以在后臺就會出現問題了。
    所以如果你的頁面是gbK或者gb2312編碼的,這樣在用xmlhttprequest就沒有這么多麻煩了  回復  更多評論
      
    # re: ajax中文上傳編碼問題 2007-01-17 18:06 | nova
    謝謝你,幫了我一個大忙。  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品久久久久秋霞小| 亚洲妇女水蜜桃av网网站| 亚洲av第一网站久章草| 动漫黄网站免费永久在线观看| 亚洲国产成人91精品| 99久久99这里只有免费费精品| 色拍自拍亚洲综合图区| 69式互添免费视频| 亚洲一区中文字幕在线观看| 99久久免费国产香蕉麻豆| 亚洲1234区乱码| 精品国产麻豆免费网站| 亚洲国产成人久久精品软件| 国产午夜无码视频免费网站 | 国产麻豆视频免费观看| 亚洲国产精品无码久久久| 毛片免费在线观看网址| 色天使色婷婷在线影院亚洲| 免费播放春色aⅴ视频| 国产精品高清免费网站| 无码乱人伦一区二区亚洲一| 国产精品怡红院永久免费| 日韩亚洲产在线观看| 日韩亚洲国产二区| 国产拍拍拍无码视频免费| 亚洲视频一区网站| 成人免费看吃奶视频网站| 四虎精品免费永久免费视频| 国产亚洲欧洲精品| 动漫黄网站免费永久在线观看| 青草青草视频2免费观看| 国产l精品国产亚洲区在线观看| 久久久久久精品成人免费图片| 亚洲AV成人精品一区二区三区| 中文亚洲成a人片在线观看| 久久国产色AV免费观看| 亚洲精品精华液一区二区| 中文字幕亚洲第一| 国产一卡二卡3卡四卡免费| 国产成人亚洲综合无| 亚洲成A人片在线观看无码不卡 |