<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的上傳中文亂麻問題
    繼續(xù)bs各種編碼:)

    遇到問題:在使用xhr發(fā)出請求時,請求的url中參數(shù)帶中文,這時在后臺解析request得不到中文
    如:
    request = new ActiveXObject("Microsoft.XMLHTTP");
    request.open("GET", url);中我的url需要帶中文參數(shù)
    直接加參數(shù)是在后臺解析不出來的,所以我使用方法對url進行編碼轉(zhuǎn)換
    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的參數(shù)進行解碼
    取出url,以及取參數(shù)方法
    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?};

    ?????
    ??????
    /**
    ???????*?解碼?說明:本方法保證?不論參數(shù)s是否經(jīng)過escape()編碼,均能得到正確的“解碼”結(jié)果
    ???????*
    ???????*?
    @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?{?//?對應(yīng)的字符未經(jīng)過編碼
    ??????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編碼的, 但是沒法轉(zhuǎn)成utf-8. 覺得跟很多因素有關(guān)系  回復(fù)  更多評論
      
    # re: ajax中文上傳編碼問題 2006-06-01 09:54 | rocket
    @arlen

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲女人初试黑人巨高清| 亚洲精品在线播放视频| 人妻巨大乳hd免费看| 亚洲色精品aⅴ一区区三区| 久久青草免费91线频观看不卡| 99ri精品国产亚洲| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 少妇亚洲免费精品| 日韩视频免费在线观看| 美女露隐私全部免费直播| 国产亚洲欧洲精品| 性色av免费观看| 久青草视频在线观看免费| 亚洲成人午夜电影| 亚洲av无码国产精品夜色午夜| 无人在线观看完整免费版视频| rh男男车车的车车免费网站| 亚洲成人黄色网址| 久久青青草原亚洲av无码app | 亚洲综合国产成人丁香五月激情| 亚洲乱码中文字幕综合234| 1000部夫妻午夜免费| 免费一看一级毛片人| 亚洲一级毛片免费观看| 中美日韩在线网免费毛片视频| 亚洲日本乱码一区二区在线二产线| 国产亚洲精品自在久久| 亚洲精品字幕在线观看| 亚洲精品无码MV在线观看| 亚洲综合色婷婷七月丁香| 夜夜爽免费888视频| 女人被男人桶得好爽免费视频| 成年女人免费碰碰视频| 成人五级毛片免费播放| 日韩高清免费观看| 黄网站色在线视频免费观看| 中文永久免费观看网站| 免费亚洲视频在线观看| 亚洲va精品中文字幕| 国产免费爽爽视频在线观看| 亚洲AV日韩AV永久无码色欲 |