JAva開発における各種中国語文字化けし問題解決策
5972 ワード
一、request取得フォーム提出中国語データの文字化けし問題の解決
post form , request ,request iso8859-1, , request ,
request.setCharacterEncoding("utf-8");
2、get提出方式中国語の処理方法get提出方式には4種類の処理方案がある
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443“ URIEncoding="utf-8"/>
String username=" ";
username = URLEncoder.encode(username, "utf-8");
System.out.println("URLEncoder="+username);
username = URLDecoder.decode(username, "utf-8");
System.out.println("URLDecoder="+username);
username = new String(username.getBytes("utf-8"),"utf-8");
<meta charset="utf-8">
二、responseがページに中国語の文字化けし問題を出力する解決
1)、 ** **
* , , , ,
//
response.setHeader("Content-Type", "text/html;charset=utf-8");
//
response.getOutputStream().write(" ".getBytes("utf-8"));
2)文字を使ってページに向かって中国語を出力する*文字を使ってページに向かって中国語を出力すると必ず文字化けしが発生する
, : response , , response iso8859-1, , response , , ok 。
// response
response.setCharacterEncoding("utf-8");
//
response.setHeader("Content-Type", "text/html;charset=utf-8");
//
response.getWriter().write(" ");
コードを1行簡単に書くことができます.
response.setContentType("text/html;charset=utf-8");
*注意:バイトストリームと文字ストリームはページに出力され、同時に使用できません(反発).文字ストリームを使用すると、ページに直接数値を出力ことはできません(デフォルトではresponse.getoutputStream()などのASCIIが使用されます.write(97); の出力結果は文字a)
三、ファイルをダウンロードする時、中国語のファイル名の文字化けしの問題の解決
, 。IE url , base64 , ,
request.getHeader("User-Agent");
リクエストヘッダからブラウザのタイプを取得し、次の操作を行います.
// , User-Agent
String agent = request.getHeader("User-Agent");
//
if(agent.contains("Firefox")) {
// base64
filename = "=?UTF-8?B?"+
new BASE64Encoder().encode(filename.getBytes("utf-8"))+"?=";
} else {
//ie url
filename = URLEncoder.encode(filename, "utf-8");
}
注意:ファイルのダウンロードは下の情報で設定する必要があります.ファイルがどんなフォーマットであっても、ブラウザに直接表示されることなくダウンロードで開きます.
response.setHeader("Content-Disposition", "attachment;filename="+filename);
まとめ
個人的には、フレームワークが使いやすく、基礎が重要だと思います.