Java WEB開発における中国語の文字化けし問題の解決

3264 ワード

プロジェクトでは常に文字化けしの問題が発生し、ネット上で解決策が見つかったことがありますが、なぜ文字化けしたのかは記録されていません.文字化けし方がいくつかあるので、簡単にまとめてみましょう.これから使うために、まとめて勉強します.一般的に、文字化けしの問題を処理するためにjavawebではどのような点に注意する必要がありますか?1、javaファイルの符号化フォーマット2、jspページの符号化フォーマット3、servletでrequest、responseオブジェクトの符号化フォーマットの設定4、ブラウザでページを表示する文字セット符号化フォーマットの前提:1.コードの開発とコンパイル時に文字セットを指定し、JBuilderとEclipseはプロジェクト属性で設定することができる.ページの符号化フォーマットは一致しています.すべてのページの符号化フォーマットはできるだけ同じでなければなりません.2つのページの間でジャンプするとき、符号化フォーマットが異なる場合、サーバはどの符号化フォーマットを使うべきか分かりません.2.ページ符号化フォーマットとtomcatプロファイルの符号化フォーマットは一致している.tomcat/conf/server.xmlプロファイルのコネクタラベルURIEncoding(統合リソース識別子符号化)の属性は「GBK」または「UTF-8」である.3.フィルタを使用して、すべての要求が1つのservletによって分配器を制御する場合、servletのfilterの実行文を使用して、ブラウザから送信された要求をutf-8として符号化する.web.xmlファイルでは:
   <filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>com.struts.beans.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

クラス内:

public class SetCharacterEncodingFilter implements Filter {
	private String encoding;
public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		this.encoding = filterConfig.getInitParameter("encoding");
	}
public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding(this.encoding);
chain.doFilter(request, response);
}}

4.設定データベース接続方式はutf-8.文字化けしやすい方式:  1.在Happerink上交给中国语的文字化.这是用get()方式用网站上可以用Happerink亚德雷斯巴拉梅特和form福姆的get梅索德.这个时候,中国語が符号化された後の一連の%がアドレスバーに現れていることがわかります。<a href="some.jsp?key=<%=java.net.URLEncoder.encode("中国語を含む可能性のあるパラメータ","UTF-8")%>>連結</a>2.javascriptで中国語の文字化を渡すfunction getName(){ var name=jQuery("#name").val(); name=encodeURI(encodeURI(name);//2回の符号化が必要 window.location.href="user.action?name="+name; }必须在巴克格劳德动作中复号.String name=request.getParameter("name"); try { name= URLDecoder.decode(name, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }iso-8859-1是Java的网络转播中使用的标准文字套装,request.getParameter("name")得到的是ISO-8859-1文字套装,换成后文字化不到.3.在沃姆get提交中国语的文字化  第一,从复号开始符号化。  第二に、getはurlコミットメント方式を歩み、urlに入る前にiso-8859-1の符号化を行った。この符号化に影響を与えるのはserver.xmlファイルのConnectorノードにuserBodyEncodingURI="true"を追加し、tomcatによるget方式の漢字符号化を制御する.4.html postで中国語を文字化して提案する第一:実はこれもtomcatの内蔵符号化と関係があり、URIEncoding="UTF-8"が設定されていない場合、デフォルトの符号化はiso 8859-1、servletでString str=new String(request.getParameter)"name").getBytes("ISO-8859-1")、"UTF-8")が必要です。漢字はそれぞれこのように符号化する必要があり、面と向かっています。第二に、実行符号化を要求するフォマートrequest.setCharactorEncoding("UTF-8")を設定します。String str=request.getParameter("name");但是,这项方法只有post被编成的电脑有效,get和苹果的方法没有怎么办.