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

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

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

    狼愛上貍

    我胡漢三又回來了

    jsp中文問題最終解決方案

    綜合了網上眾多方案后,最終從工具選項設置到編碼解決全部解決.感謝網上眾多分享者的無私.

    1)保持這2句的字符編碼一致:

     <%@ page contentType="text/html;charset=UTF-8" language="java"%>

    <%@ page language="java" import="java.util.*,hy.*" pageEncoding="UTF-8"%>

     

    2)數據庫

    在寫JSP時,里面面有涉及到數據庫操作,當保存時就會彈出

    save could not be completed

    原因是some characters could not be mapped using iso8859-1

    <%@ page language="java" pageEncoding="GBK"%>

    設成GBK或UTF-8就可以了,只要他里面的支持中文就ok了

    3)eclipse設置

    用eclipse 編寫jsp頁面或

    window-->preferences-->general-->editor-->text file encoding,

    我打開perferences還是沒有找到,狂暈~~~~~~~~~,

    接著看看別的地方有沒有設置編碼的地方,

    還是沒有找到..........

     又回到perferences,覺得還是在這里可以解決,呵呵,問題還是出在這里,

    我找到"General"--"Content Types",

    右邊有個樹形的text,

    展開找到"JSP",開始沒發現,

    那家伙躲在最低下...........,

    大家不要像我粗心,

    最低下有個"Default encoding",

    里面默認的是"ISO-8859-1",

    終于找到了,

    刪掉"ISO-8859-1"填上"UTF-8",

    在點一下"update",

    OK。再保存,

    就沒有錯誤了..............

    4)tomcat中設置server.xml

    <Connector

                port="8080" maxHttpHeaderSize="8192"

                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

                enableLookups="false" redirectPort="8443" acceptCount="100"

                connectionTimeout="20000" disableUploadTimeout="true" 

                URIEncoding="GBK" useBodyEncodingForURI="true" />

    4)tomcat設置數據庫數據源

    <Context path="/roller" docBase="E:\MyWorks\Websites\4.5K\server\apache-tomcat\webapps\roller" debug="0">

      <Resource auth="Container"

          type="javax.sql.DataSource"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://localhost:3306/test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;mysqlEncoding=utf8"

        username="root"

        password=""

        maxActive="20"

        maxIdle="3"

        removeAbandoned="true"

        maxWait="3000" />

      <!-- If you want e-mail features, un-comment the section below -->

      <!--

      <Resource auth="Container"

         type="javax.mail.Session"

         mail.smtp.host="mailhost.example.com" />

      -->

    </Context>

    5)提交表單

    1 表單提交的數據,用request.getParameter(“xxx”)返回的字符串為亂碼或者??

    2 直接通過url如http://localhost/a.jsp?name=中國,這樣的get請求在服務端用request. getParameter(“name”)時返回的是亂碼;按tomcat4的做法設置Filter也沒有用或者用request.setCharacterEncoding("GBK");也不管用

    原因:

    1 tomcat的j2ee實現對表單提交即post方式提示時處理參數采用缺省的iso-8859-1來處理

    2 tomcat對get方式提交的請求對query-string 處理時采用了和post方法不一樣的處理方式。(與tomcat4不一樣,所以設置setCharacterEncoding(“gbk”))不起作用。

    解決辦法:

    首先所有的jsp文件都加上:

    1 實現一個Filter.設置處理字符集為GBK。(在tomcat的webapps/servlet-examples目錄有一個完整的例子。請參考web.xml和SetCharacterEncodingFilter的配置。)

    1)只要把%TOMCAT安裝目錄%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目錄/filters下,如果沒有filters目錄,就創建一個。

    2)在你的web.xml里加入如下幾行:

     <filter>

     <filter-name>Set Character Encoding</filter-name>

     <filter-class>filters.SetCharacterEncodingFilter</filter-class>

     <init-param>

     <param-name>encoding</param-name>

     <param-value>GBK</param-value>

     </init-param>

     </filter>

     

     <filter-mapping>

     <filter-name>Set Character Encoding</filter-name>

     <url-pattern>/*</url-pattern>

     </filter-mapping>

    3)完成.

    2 get方式的解決辦法

    1) 打開tomcat的server.xml文件,找到區塊,加入如下一行:

    URIEncoding=”GBK”

    完整的應如下:

    <Connector

    port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

     enableLookups="false" redirectPort="8443" acceptCount="100"

     debug="0" connectionTimeout="20000"

     disableUploadTimeout="true"

     URIEncoding="GBK"

    />

    2)重啟tomcat,一切OK。

    執行如下jsp頁頁測試是否成功

    <%@ page contentType="text/html;charset=gb2312"%>

    <%@ page import="java.util.*"%>

    <%

     

     String q=request.getParameter("q");

     q = q == null? "沒有值" : q;

     

    %>

    <HTML>

    <HEAD><TITLE>新聞列表顯示</TITLE>

    <META http-equiv=Content-Type content="text/html; charset=gb2312">

    <META http-equiv=pragma content=no-cache>

    <body>

    你提交了:

    <%=q%>

    <br>

    <form action="tcnchar.jsp" method="post">

     輸入中文:<input type="text" ><input type="submit" value="確定">

     <br>

     <a href="tcnchar.jsp?q=中國">通過get方式提交</a>

     

    </form>

    </BODY></HTML>

    測試結果如果你輸入文本框或者點超鏈都會顯示:你提交了”中國”,說明成功!!!!!

    6) 一不小心看到一個非常好的辦法,可以讓我們不必寫

    new String(st.getBytes("ISO8859_1"),"GBK")

    詳細如下

    只要修改一個地方就行了,文件為: tomcat4/src/catalina/src/share/org/apache/catalina/connector/HttpReque stBase.java

     

     

    找到protected void parseParameters()方法,把

    if (encoding == null) encoding = "ISO-8859-1";

    改為

    if (encoding == null) encoding = "GBK";

    然后編譯

    javac HttpRequestBase.java生成兩個class文件.再然后用jar命令把它打包成原來的catalina.jar,覆蓋原來的,最后重新啟動tomcat就可以。

    posted on 2007-09-20 10:56 狼愛上貍 閱讀(500) 評論(0)  編輯  收藏 所屬分類: Tomcat

    主站蜘蛛池模板: 亚洲黄色在线观看视频| 亚洲码国产精品高潮在线| 亚洲人成电影青青在线播放| 国产成人无码区免费内射一片色欲| 亚洲第一区在线观看| 国产AV无码专区亚洲AV琪琪| 国产美女a做受大片免费| 蜜芽亚洲av无码一区二区三区| 韩国免费三片在线视频| 亚洲精华国产精华精华液好用 | 亚洲专区中文字幕| 成人免费黄色网址| 中文字幕亚洲综合小综合在线| 国产一卡2卡3卡4卡无卡免费视频| 亚洲a级片在线观看| 青青草国产免费久久久91| 亚洲国产成人精品无码区花野真一 | 亚洲AV日韩精品久久久久| 男人的天堂网免费网站| 亚洲日本国产精华液| AV免费网址在线观看| 免费人成大片在线观看播放电影| 亚洲成片观看四虎永久| 成人性生交大片免费看中文| 亚洲成熟xxxxx电影| 三年片在线观看免费观看高清电影 | 国产亚洲精品a在线观看| 黄网站色视频免费在线观看的a站最新 | 国产男女猛烈无遮挡免费视频网站| 日日摸夜夜添夜夜免费视频| 亚洲精品国产字幕久久不卡| 91成人在线免费视频| 亚洲欧美成人综合久久久| 亚洲性在线看高清h片| 桃子视频在线观看高清免费视频| 亚洲福利一区二区精品秒拍| 国产美女无遮挡免费视频| 久久久久成人片免费观看蜜芽 | 亚洲av无码不卡一区二区三区| 黄色免费网站网址| 日本高清免费中文在线看|