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

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

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

    posts - 32, comments - 153, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    又談亂碼問(wèn)題解決

    Posted on 2007-01-23 21:12 Zou Ang 閱讀(4380) 評(píng)論(6)  編輯  收藏 所屬分類(lèi):

    有人說(shuō),亂碼問(wèn)題一直跟中國(guó)的程序員特別有緣,真是再同意不過(guò)了,不管是Struts,JSF,JSP,還是MySQL,Tomcat,全都或多或少有亂碼的問(wèn)題。
    一般的做法有用Filter:

    < filter >
    ????
    < filter-name > Set?Character?Encoding </ filter-name >
    ????
    < filter-class > org.springframework.web.filter.CharacterEncodingFilter </ filter-class >
    ????
    < init-param >
    ??????
    < param-name > encoding </ param-name >
    ??????
    < param-value > GBK </ param-value >
    ????
    </ init-param >
    ????
    < init-param >
    ??????
    < param-name > ignore </ param-name >
    ??????
    < param-value > true </ param-value >
    ????
    </ init-param >
    ??
    </ filter >
    ??
    < filter-mapping >
    ????
    < filter-name > Set?Character?Encoding </ filter-name >
    ????
    < url-pattern > *.do </ url-pattern >
    ??
    </ filter-mapping >
    ??
    < filter-mapping >
    ????
    < filter-name > Set?Character?Encoding </ filter-name >
    ????
    < url-pattern > *.jsp </ url-pattern >
    ??
    </ filter-mapping >
    ??
    < filter-mapping >
    ????
    < filter-name > Set?Character?Encoding </ filter-name >
    ????
    < url-pattern > *.html </ url-pattern >
    ??
    </ filter-mapping >
    ??
    < filter-mapping >
    ????
    < filter-name > Set?Character?Encoding </ filter-name >
    ????
    < url-pattern > *.htm </ url-pattern >
    ??
    </ filter-mapping >


    的,有用

    <% request.setCharacterEncoding( " GBK " ); %>

    的,還有用

    <% @?page?contentType = " text/html;?charset=GBK " ?pageEncoding = " GBK " %>


    的,還可以用

    <% ?String?name? = ? new ?String(request.getParameter( " name " ).getBytes( " 8859_1 " ),? " GB2312 " );? %>


    昨天就在做項(xiàng)目的過(guò)程中,發(fā)現(xiàn)用URL傳request參數(shù)的時(shí)候,在第二個(gè)頁(yè)面上得到亂碼的問(wèn)題。把上面幾種方法都試了一下還是不行。仔細(xì)追蹤了一下,發(fā)現(xiàn)在頁(yè)面的源代碼上中文是正常的,一直到URL還是中文正常,可是在后臺(tái)的Action里面log出來(lái)就成了亂碼了,于是猜想是在request封裝的過(guò)程中把中文變成亂碼了,以致于后臺(tái)直接就是取到的亂碼。在后臺(tái)Action中Set入中文,頁(yè)面上正常顯示,說(shuō)明Struts的中文已經(jīng)不存在問(wèn)題。剩下的,應(yīng)該就只有doGet和doPost方法的問(wèn)題了。找了一下tomcat的配置文件,發(fā)現(xiàn)只要在server.xml中:

    ???? <!-- ?Define?a?non-SSL?HTTP/1.1?Connector?on?port?8080? -->
    ????
    < Connector? port ="8080" ?maxHttpHeaderSize ="8192"
    ???????????????maxThreads
    ="150" ?minSpareThreads ="25" ?maxSpareThreads ="75"
    ???????????????enableLookups
    ="false" ?redirectPort ="8443" ?acceptCount ="100"
    ???????????????connectionTimeout
    ="20000" ?disableUploadTimeout ="true" />
    ????
    <!-- ?Note?:?To?disable?connection?timeouts,?set?connectionTimeout?value
    ?????to?0?
    -->

    改為

    ???? <!-- ?Define?a?non-SSL?HTTP/1.1?Connector?on?port?8080? -->
    ????
    < Connector? port ="8080" ?maxHttpHeaderSize ="8192"
    ???????????????maxThreads
    ="150" ?minSpareThreads ="25" ?maxSpareThreads ="75"
    ???????????????enableLookups
    ="false" ?redirectPort ="8443" ?acceptCount ="100"
    ???????????????connectionTimeout
    ="20000" ?disableUploadTimeout ="true" ?URIEncoding ="GBK" />
    ????
    <!-- ?Note?:?To?disable?connection?timeouts,?set?connectionTimeout?value
    ?????to?0?
    -->

    就是加上URIEncoding="GBK"就萬(wàn)事大吉了。
    至此,應(yīng)該再困難的亂碼問(wèn)題都解決了吧。就是要在頁(yè)面上、數(shù)據(jù)庫(kù)中、request里、doGet、doPost方法里面都是中文!看你還有什么地方躲??


    評(píng)論

    # re: 又談亂碼問(wèn)題解決  回復(fù)  更多評(píng)論   

    2007-01-23 23:18 by 小車(chē)馬
    不錯(cuò),這個(gè)亂碼問(wèn)題,可能和tomcat容器有關(guān),呵呵

    樓主,潛力貼論壇(http://content.uu1001.com)是我個(gè)人的一個(gè)設(shè)想,如果你對(duì)java非常的專(zhuān)注,并且愿意交我這個(gè)朋友,可以發(fā)郵件給我(lbw070105@gmail.com),希望我們可以一起發(fā)展它。

    # re: 又談亂碼問(wèn)題解決  回復(fù)  更多評(píng)論   

    2007-01-24 10:06 by swiftybin
    好文章??!收藏了。多謝有心的樓主!

    # re: 又談亂碼問(wèn)題解決  回復(fù)  更多評(píng)論   

    2007-01-24 10:09 by 小石頭
    好!!

    # re: 又談亂碼問(wèn)題解決  回復(fù)  更多評(píng)論   

    2007-01-24 13:53 by BeanSoft
    Tomcat 5 默認(rèn)情況下, 用 request.setCharacterEncoding( " GBK " ); 這樣的方法可以獲得 POST 方法提交的中文, 而 GET 方法無(wú)論如何都需要強(qiáng)制轉(zhuǎn)換編碼
    String name = new String(request.getParameter( " name " ).getBytes( " 8859_1 " ), " GB2312 " );
    一般來(lái)說(shuō)做個(gè)過(guò)濾器來(lái)對(duì)GET和POST做不同的判斷處理即可.
    至于樓主修改 Tomcat 配置的方式, 自己開(kāi)發(fā)的應(yīng)用還可以, 要是虛擬主機(jī)的話(huà), 就不管用了.

    # re: 又談亂碼問(wèn)題解決  回復(fù)  更多評(píng)論   

    2007-01-25 15:50 by 冷面閻羅
    那weblogic的情況應(yīng)該和tomcat差不多吧?還是
    看了weblogic的config.xml好像沒(méi)有地方改

    # re: 又談亂碼問(wèn)題解決[未登錄](méi)  回復(fù)  更多評(píng)論   

    2007-01-25 16:00 by BeanSoft
    Weblogic 的有自己的參數(shù), 所以不是很推薦用這種改服務(wù)器參數(shù)的辦法解決中文問(wèn)題... 不同的服務(wù)器參數(shù)都不一樣, 就是 Weblogic 自己的版本不一樣, 參數(shù)也不一樣...

    參考: http://dev2dev.bea.com.cn/techdoc/200311546.html
    主站蜘蛛池模板: 亚洲va久久久噜噜噜久久 | 亚洲av无码乱码国产精品 | 99在线精品免费视频九九视| 在线免费观看你懂的| 午夜影院免费观看| 真实国产乱子伦精品免费| 91香蕉国产线观看免费全集| 国产乱子精品免费视观看片| 国产1024精品视频专区免费| 成在人线AV无码免费| 欧洲美熟女乱又伦免费视频| 四虎国产精品免费久久影院| 亚洲国产午夜福利在线播放| 亚洲成?v人片天堂网无码| 久久精品国产亚洲7777| 亚洲AV无码一区东京热久久 | 亚洲av综合av一区| 亚洲首页在线观看| 国产亚洲精品bv在线观看| 精品免费AV一区二区三区| 一区二区免费国产在线观看 | 国产黄在线播放免费观看| 在线观看片免费人成视频无码| 精品国产免费一区二区三区香蕉| 1a级毛片免费观看| 女人张开腿等男人桶免费视频| 国产乱子影视频上线免费观看| 亚洲情侣偷拍精品| 久久亚洲成a人片| 亚洲一区二区三区在线网站| 在线视频亚洲一区| 久久一区二区免费播放| 7m凹凸精品分类大全免费| 青青草国产免费久久久91| 国产亚洲精品高清在线| 中文字幕亚洲色图| 亚洲国产成人AV网站| 四虎国产精品免费永久在线| 成人免费的性色视频| 免费v片在线观看无遮挡| 亚洲av中文无码乱人伦在线播放 |