日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java exception 乱码_java 常见中文乱码问题解决

發(fā)布時間:2024/10/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java exception 乱码_java 常见中文乱码问题解决 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于中文亂碼:

一、

1).在jsp頁面上輸入中文,要保證中文不亂碼,有三個前提:

保證contentType=“text/html;charset=UTF-8”,pageEncoding=“UTF-8” charset和pageEncoding的編碼一致,且都支持中文,通常建議取值為UTF-8,還需要擺正瀏覽器的顯示的字符編碼也和請求的jsp頁面的編碼一致。

2)、常見問題實例:(比如兩個jsp,b.jsp獲取a.jsp頁面?zhèn)鬟^來的參數(shù)值,method為POST)

a.jsp

pageEncoding="UTF-8"%>

中文亂碼

userName:

b.jsp

request.setCharacterEncoding("UTF-8");

%>

獲取中文參數(shù)值:默認參數(shù)在傳輸過程中使用的編碼為ISO-8859-1.

上面方法對get請求無效,在get請求得按下面方式解碼轉(zhuǎn)碼:

String val = request.getParameter("userName");

String userName = new String(val.getBytes("ISO-8859-1"),"UTF-8");

out.print(userName+"==");

%>

上面方式比較復(fù)雜,有種方式可以既適用于get請求又適用于post請求,修改tomcat參數(shù),中文亂碼是tomcat的 問題:

首先修改本地tomcat服務(wù)器/conf/server.xml中的:

不要忘了在exclipse中也改一下tomcat的映射配置文件server.xml,useBodyEncodingForURI這個屬性的意思是使用body里指定的字符編碼,比URIEncoding要靈活一點,比如body已經(jīng)指定了UTF-8,那么上面解碼轉(zhuǎn)碼的方式還會是亂碼,因為這個屬性已經(jīng)指定了字符集utf-8,解碼也必須utf-8.

二、解析txt文檔亂碼。

windows下的文本文件字符集默認是GBK2312/GBK,在使用字符流或字節(jié)流讀取文本文件的時候,文本文件可能是不同的字符集,比如有ANSI、GBK、UTF-8、Unicode等等,要想讀入的數(shù)據(jù)不亂碼,一點要保證讀流傳入的字符集和文本文件的字符集一致,這樣不論文本文件的字符集是什么都可以防止亂碼,所以要獲取文本文件的字符集,比較專業(yè)一點的方法可以去找一下文件探測器,下面介紹一個比較實用的實例:

package com.hnasys.fft.web.component.file.analyze;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

import java.lang.reflect.Field;

import java.util.LinkedList;

import java.util.List;

import com.hnasys.fft.tool.land.Reflects;

public class TabFileAnalyzer {

public static String codeString(File fileName) throws Exception{

@SuppressWarnings("resource")

BufferedInputStream bin = new BufferedInputStream(new FileInputStream(fileName));

int p = (bin.read() << 8) + bin.read();

String code = null;

switch (p) {

case 0xefbb:

code = "UTF-8";

break;

case 0xfffe:

code = "Unicode";

break;

case 0xfeff:

code = "UTF-16BE";

break;

case 0x5c75:

code = "ANSI|ASCII" ;

break ;

default:

code = "GBK";

}

return code;

}

public static void analyze(File file, List datas, Class beanClass) {

BufferedReader br = null;

List lines = new LinkedList();

try {

try {

//讀流時傳入所讀的文本文件的字符集,這樣就可以保持傳入的文本文件的字符編碼可讀入時候所用編碼一致

br = new BufferedReader(new InputStreamReader(new FileInputStream(file), codeString(file)));

} catch (Exception e) {

e.printStackTrace();

}

String line = "";

while ((line = br.readLine()) != null) {

if (!line.trim().isEmpty()) {

lines.add(line + " ");

}

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

for (String line : lines) {

T obj = null;

try {

obj = beanClass.newInstance();

} catch (InstantiationException e) {

throw new RuntimeException("創(chuàng)建對象失敗", e);

} catch (IllegalAccessException e) {

throw new RuntimeException("創(chuàng)建對象失敗", e);

}

String[] lineCols = line.split("\t");

List fields = Reflects.getFields(beanClass);

for (Field field : fields) {

String value = lineCols[fields.indexOf(field)];

if (value == null)

continue;

value = value.trim();

if ("N/A".equals(value) || value.isEmpty())

continue;

// 實際類型字段值

Object rv = null;

// 設(shè)置到對象中

if (field.getType() == String.class)

rv = value;

else if (field.getType() == Integer.class)

rv = Integer.valueOf(value);

else if (field.getType() == Double.class)

rv = Double.valueOf(value);

else

throw new RuntimeException("暫不支持除String、Integer、Double以外的類型");

// 設(shè)置到字段中

field.setAccessible(true);

try {

field.set(obj, rv);

} catch (IllegalArgumentException | IllegalAccessException e) {

throw new RuntimeException(e);

}

}

datas.add(obj);

}

}

}

總結(jié)

以上是生活随笔為你收集整理的java exception 乱码_java 常见中文乱码问题解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。