天天看點

java中文亂碼decode_JAVA中文亂碼最終解決方案

??澧?锛?

JDK1.5

TOMCAT5.0.30

%TOMCAT_HOME%:F:\Tomcat 5.0

缁?涓?浣跨??tf-8

涓???URL锛?

淇???TOMCAT_HOME%\conf\server.xml??浠?

?懼?闆?涓???瀹癸?

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

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

debug="0" connectionTimeout="20000"

disableUploadTimeout="true" />

娣誨??锛?URIEncoding="utf-8"

淇??瑰????瀹瑰?涓?锛?

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

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

debug="0" connectionTimeout="20000"

disableUploadTimeout="true" URIEncoding="utf-8" />

?ㄥ?㈡?鋒?甸??瑕?瀵?RL涓???涓???杩?琛?缂???

eg:

String t=URLEncoder.encode("help涓???", "utf8");

urlString="http://61.144.47.228/sendSeveninfo.do?msisdn=8615602387092&content="+t+"&username=seven&password=seven777";

URL url = new URL(urlString);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

String coo = conn.getResponseMessage();

?ㄦ???″?ㄧ????RLDecoder瑙g??

String de=URLDecoder.decode(request.getParameter("content"), "utf8");

String content =? new String(request.getParameter("content").getBytes(),"utf8");

?懼害URL??BK缂???, displaytag ??google?ㄧ????utf8缂???.

浜???澶???琛ㄥ??涔辯??锛?

?ㄨ?婊ゅ?ㄥ?с??

涓??㈡???ㄤ?澶???琛ㄥ????涓?涓?filter

package hrl.util.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements Filter {

protected String encoding = null;

protected FilterConfig filterConfig = null;

protected boolean ignore = true;

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig=filterConfig;

this.encoding=filterConfig.getInitParameter("encoding");

String value=filterConfig.getInitParameter("ignore");

if(value==null)

this.ignore=true;

else if(value.equalsIgnoreCase("true"))

this.ignore=true;

else

this.ignore=false;

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

// TODO ???ㄧ?????規?瀛???

if (ignore || (request.getCharacterEncoding() == null)) {

String encoding = selectEncoding(request);

if (encoding != null){

request.setCharacterEncoding(encoding);

}else

System.out.println("encoding has not set");

}

chain.doFilter(request, response);

}

public void destroy() {

// TODO ???ㄧ?????規?瀛???

this.encoding = null;

this.filterConfig = null;

}

protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}

}

??eb.xml????缃?姝?ilter锛?灏??跺獎灏??版????椤甸???

encoding filter

hrl.util.filter.SetCharacterEncodingFilter

encoding

utf-8

encoding filter

/*

涓???澶???jsp&servlet椤甸?㈡?劇ず涔辯??

JSP涓?锛?

??椤剁?????ュ?涓?浠g??锛?

?抽??锛?charset=gb2312

servlet涓?锛?

??oGet ??doPost?規?涓????ュ?涓?浠g??锛?

response.setCharacterEncoding("utf-8");

????澶?????浠朵?杞芥?舵??绀轟?瀛???浠跺??涔辯????瑙e?蟲?規?

?ㄥ???涓?杞界??JSP??servlet??淇??瑰??搴?澶撮?ㄥ?涓?锛?

response.setContentType("application/octet-stream;charset=utf8");

灏???浠跺??杩?琛?缂???杞????

response.addHeader("Content-Disposition","attachment;filename="+hrl.util.text.DealString.toUtf8String(file.getName())+"\"");

DealString绫葷??toUtf8String?規?濡?涓?锛?

public static String toUtf8String(String src)

{

byte[] b = src.getBytes();

char[] c = new char[b.length];

for(int i=0;i

{

c[i] = (char)(b[i]&0x00FF);

}

return new String(c);

}

浜???璇誨??properties??浠舵?跺?虹?頒貢??

濡???properties??浠堕??????涓????朵???浠ョ??esourceBundle搴???锛?????瀵?roperties??浠惰?琛?缂???杞???

??DK涓???渚?浜?native2ascii?戒護 浠??藉?瀹??闆??绗??????杞?????

??璁?essage.properties ??浠跺?ㄧ??褰?WEB-INF/resource??褰?涓?

?ㄥ?戒護琛?妯″?涓?杩???EB-INF/resource??褰?锛??跺???ц?濡?涓??戒護

native2ascii ??encoding utf-8 message.properties message_zh_CN.properties

????encoding琛ㄧず瑕?杞??㈡????缂????煎?

?ц?浠ヤ??戒護浠ュ??灏?????message_zh_CN.properties??浠??闆?ㄥ氨??浠ョ??esourceBundle绫昏?琛?璇誨??浜?

涔???浠ラ??杩??跺??璇誨????浠剁??缂????煎??ヨ?誨????浠?

isReader = new InputStreamReader(is,GlobalConst.STR_ENCODE_GBK);

bufferedReader = new BufferedReader(isReader);

while ((strLine = bufferedReader.readLine()) != null) {

..........

}

????AJAX涔辯??

?ㄥ?????″?ㄤ??????ㄥ?芥??ncodeURIComponent(String str)瀵瑰???拌?琛?缂???

涓????版??搴?缂???

??ySQL涓句?

?ㄥ緩琛ㄥ??寤哄??堕??瀹?缂????煎?锛?

eg: CREATE database CHARACTER SET UTF8

create table (

.........

)engine=InnoDB character set utf8;

??绔??哄?锛?http://www.diybl.com/course/3_program/java/javaxl/200861/118552_2.html

java中文亂碼decode_JAVA中文亂碼最終解決方案

posted on 2008-12-11 17:37 娉???璇?2950) 璇?璁?0) ?缂?杈? ??惰??