中文亂碼解決及中文編碼成UTF8

1. 中文亂碼

Java中有些類對中文的支持可能有問題,例如在最近用 AndroidHttpClient API 解析 web url 時,通過 303 跳轉返回的跳轉 url 中包含了中文,但是中文部分顯示爲類似 ”街景总结這樣的亂碼,導致 url 無法訪問,代碼如下,其中的 location 文件名部分中包含了中文亂碼:

	final HttpClient client = AndroidHttpClient.newInstance("Android");
        final HttpGet getRequest = new HttpGet(url.trim());

        try {
            HttpResponse response = client.execute(getRequest);
            final int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
            	if (HttpStatus.SC_SEE_OTHER == statusCode) {	//303跳轉,從location字段中獲取返回的跳轉地址url
            		String location = response.getLastHeader("Location").getValue();
            		...
            	}

            }

            ...

        } catch (...) {
            ...
        }

	...

解決方法:先將亂碼編碼成 iso8859-1,然後再解碼成 utf-8 即可

String location = response.getLastHeader("Location").getValue();
int nameIndex = location.lastIndexOf("/") + 1;
String name = new String(location.substring(nameIndex).getBytes("iso8859-1"), "utf-8"); //解碼、編碼
String locPre = location.substring(0, nameIndex);
location = locPre + name;

2. 中文編碼成UTF-8

有時服務器對 URL 中的中文解碼字符(即顯示出中文)不支持,無法訪問該 URL,而只支持編碼成 UTF-8 後的的中文字符,比如 URL 文件名部分含有解碼後中文字符,現在需要將其編碼成 UTF-8 格式,可採用 URLEncoder.encode() 方法來解決:

int nameIndex = url.lastIndexOf("/") + 1;
String name = url.substring(nameIndex);
String urlPre = url.substring(0, nameIndex);
url = urlPre + URLEncoder.encode(name, "utf-8");








發佈了34 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章