HttpServeretRequest中国語文字化けし

2118 ワード

クライアントがサーバのページにアクセスする場合は、関連情報を記入してコミットします.
————1—————情報はrequestオブジェクトにカプセル化され、カプセル化時にはページ設定の符号化フォーマットが採用されている.我々は一般的にUTF-8ページ符号化フォーマット1を設定し、HTMLページ符号化フォーマットをUTF-82を設定しているHTMLページ言語を中国語3、JSPページ符号化フォーマットをUTF-8<%@page contentType=「text/html;charset=UTF-8」%>————————」サーバーを設定して関連情報を解析し、デフォルトで採用されている符号化フォーマットはISO 8859、したがって,文字化けしが発生し,問題がサーバ解析requestオブジェクトに現れる情報が採用する符号化フォーマットと以前の符号化フォーマットとが一致しないことに起因することが分かるので,サーバ解析requestオブジェクトを設定する場合の符号化フォーマットもUTF-8とすればよい.request.setCharacterEncoding("UTF-8"); なお、この方法は、POST要求方式における文字化けしの問題に対してのみ有効である.それはGET方式の文字化けの問題に対して、私達は“サーバーがrequestの対象で解析した文字化け”に対して更に符号化を行う必要があります:1、サーバーはISO 8859で解析を行うのではありませんか、もし:String username=request.getParameter("username"); このときusernameに保存されているデータはISOに対応しています
8859符号化ライブラリの情報2、ここではまずusernameがこの符号化ライブラリに対応する情報:usernameを探し出す.getBytes("iso8859-1");3、UTF-8の符号化フォーマットで再解析する:username=new String(username.getBytes(「is 08859-1」)、「UTF-8」);4、このようにこのときのusernameに保存されているデータはUTF-8で符号化されているので、文字化けの問題は発生しません.同様に、ハイパーリンクアドレスの後にハイパーリンクが持つ中国語情報も、GET方式で対応する方法で解決します.
username =  new String(username.getBytes("is08859-1"), "UTF-8");
 
**************************************************************************************************
以下の方法は使わないほうがいいです.上記の方法を使ったほうがいいです.
**************************************************************************************************
また,サーバの構成情報を修正することで,文字化けしを統一的に解決することができ,いずれの方式の要求でも決定できるが,開発過程ではこの方式を使用しないほうがよい.Tomcatを例にとると、confディレクトリの下のserverを変更することができます.xmlファイル:
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" /> 
Connectorに関連するプロパティを追加できます:URIEncoding="UTF-8"サーバのエンコードフォーマットは、最初に言ったように
request.setCharacterEncoding("UTF-8"); POST方式のみ有効、GET無効の問題は、Connectorに以下の属性を追加することができます:useBodyEncodingForURI=“true”はGET方式でもUTF-8符号化を使用することができます