久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

java亂碼總結(jié)

 yanjj 2011-11-29

1.URL亂碼

有的是,,不可避免要在URL上傳中文,,用一些框架(spring MVC,struts)可以解決,。但是我們也可以自己手動(dòng)解決,。

Java代碼
String url = "http://www.softbeta.?name=小武"// url編碼url = "http://www.softbeta.?name=" + java.net.URLEncoder.encode("小武");  System.out.println("url:" + url);  // url解碼url = "http://www.softbeta.?name=" + java.net.URLDecoder.decode("小武");  System.out.println("url:" + url); 

String url = "http://www.softbeta.?name=小武";
// url編碼
url = "http://www.softbeta.?name=" + java.net.URLEncoder.encode("小武");
System.out.println("url:" + url);
// url解碼
url = "http://www.softbeta.?name=" + java.net.URLDecoder.decode("小武");
System.out.println("url:" + url);

encode(String s) 和 decode(String s)方法會(huì)采用系統(tǒng)的默認(rèn)編碼,已標(biāo)記為@deprecated 取代為帶編碼的方法encode(String s, String enc),decode(String s, String enc),。

Java代碼
String url = "http://www.softbeta.?name=小武"// url編碼url = "http://www.softbeta.?name=" + java.net.URLEncoder.encode("小武","utf-8");  System.out.println("url:" + url);  // url解碼url = "http://www.softbeta.?name=" + java.net.URLDecoder.decode("小武","utf-8");  System.out.println("url:" + url); 

String url = "http://www.softbeta.?name=小武";
// url編碼
url = "http://www.softbeta.?name=" + java.net.URLEncoder.encode("小武","utf-8");
System.out.println("url:" + url);
// url解碼
url = "http://www.softbeta.?name=" + java.net.URLDecoder.decode("小武","utf-8");
System.out.println("url:" + url);

url encode和decode在前端js也有很好的支持,,這樣能方便我們處理請(qǐng)求和響應(yīng)。

2.JSP亂碼

在基于框架開發(fā)中,,JSP亂碼基本上由框架解決,,但是有些地方我們的編碼需要統(tǒng)一。

在JSP文件頭,,一般加入:

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

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

charset=UTF-8的作用是指定JSP向客戶端輸出的編碼方式為"UTF-8",;

pageEncoding="UTF-8",為了讓JSP引擎能正確地解碼含有中文字符的JSP頁面,;

如果對(duì)請(qǐng)求編碼:

Java代碼
request.setCharacterEncoding("UTF-8"); 

request.setCharacterEncoding("UTF-8");

還有一種是在web容器中設(shè)置編碼,。如Tomcat,如果上面的方法都能解決亂碼,,可以在server.xml修改URIEncoding:

Xml代碼
<Connectorport="8088"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"URIEncoding="utf-8"/>

<Connector port="8088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="utf-8"/>

3.打包文件(zip)亂碼

如果用原生的java.util.zip.ZipOutputStream進(jìn)行文件打包,,當(dāng)文件名出現(xiàn)中文的時(shí)候,會(huì)出現(xiàn)亂碼,,目前還沒有很好的解決方法,,除非修改這個(gè)類的代碼,然后重新打包,。

org.apache.tools.zip.ZipOutputStream用這個(gè)類進(jìn)行打包可以設(shè)置編碼,,有效的解決中文問題。

Java代碼
ZipOutputStream zos = new ZipOutputStream(os);  zos.setEncoding("GBK");  ...  zos.flush();  zos.close(); 

ZipOutputStream zos = new ZipOutputStream(os);
zos.setEncoding("GBK");
...
zos.flush();
zos.close();

4.其他情況通用解決

像文件亂碼,,數(shù)據(jù)庫亂碼...等,,很多時(shí)候是方法沒有用對(duì),,字符集設(shè)置不統(tǒng)一或沒有用對(duì)。對(duì)文件讀寫,,用正確的流,,合適的編碼,一般不會(huì)出問題,。數(shù)據(jù)庫也是一樣,,數(shù)據(jù)庫的編碼也后臺(tái)處理程序編碼要統(tǒng)一。但是還是有一些情況我們不能成功解決亂碼問題,,這是只有強(qiáng)制轉(zhuǎn)碼了,。

Java代碼
/*** 轉(zhuǎn)碼** @author oliver* @created 2011-10-13** @param str 需要轉(zhuǎn)碼的字符串* @param originEncode 原字符串編碼* @param destEncode 需要轉(zhuǎn)向的編碼* @return* @throws UnsupportedEncodingException*/publicstatic String transcoding(String str,String originEncode,String destEncode) throws UnsupportedEncodingException{  if(str==null || str.trim()==""){  return str;      }  returnnew String(str.getBytes(originEncode),destEncode); 

/**
* 轉(zhuǎn)碼
*
* @author oliver
* @created 2011-10-13
*
* @param str 需要轉(zhuǎn)碼的字符串
* @param originEncode 原字符串編碼
* @param destEncode 需要轉(zhuǎn)向的編碼
* @return
* @throws UnsupportedEncodingException
*/
public static String transcoding(String str,String originEncode,String destEncode) throws UnsupportedEncodingException{
if(str==null || str.trim()==""){
return str;
}
return new String(str.getBytes(originEncode),destEncode);
}

如果你知道亂碼字符串以前用的編碼,那么可以用上面的方法解決亂碼,。

在java.nio包中,,也有類似編碼解碼的方法。

Java代碼
String name="中文"Charset ct = Charset.forName("utf-8");  ByteBuffer encode = ct.encode(name);  name=ct.decode(encode).toString(); 

String name="中文";
Charset ct = Charset.forName("utf-8");
ByteBuffer encode = ct.encode(name);
name=ct.decode(encode).toString();

總之,,亂碼問題很多時(shí)候是由于我們的方法,,工具沒有選擇正確,或者編碼不統(tǒng)一,。如果真的沒有其他好的辦法,,可以自己寫工具強(qiáng)制轉(zhuǎn)碼。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多