java exception 乱码_java 常见中文乱码问题解决
关于中文乱码:
一、
1).在jsp页面上输入中文,要保证中文不乱码,有三个前提:
保证contentType=“text/html;charset=UTF-8”,pageEncoding=“UTF-8” charset和pageEncoding的编码一致,且都支持中文,通常建议取值为UTF-8,还需要摆正浏览器的显示的字符编码也和请求的jsp页面的编码一致。
2)、常见问题实例:(比如两个jsp,b.jsp获取a.jsp页面传过来的参数值,method为POST)
a.jsp
pageEncoding="UTF-8"%>
中文乱码
userName:
b.jsp
request.setCharacterEncoding("UTF-8");
%>
获取中文参数值:默认参数在传输过程中使用的编码为ISO-8859-1.
上面方法对get请求无效,在get请求得按下面方式解码转码:
String val = request.getParameter("userName");
String userName = new String(val.getBytes("ISO-8859-1"),"UTF-8");
out.print(userName+"==");
%>
上面方式比较复杂,有种方式可以既适用于get请求又适用于post请求,修改tomcat参数,中文乱码是tomcat的 问题:
首先修改本地tomcat服务器/conf/server.xml中的:
不要忘了在exclipse中也改一下tomcat的映射配置文件server.xml,useBodyEncodingForURI这个属性的意思是使用body里指定的字符编码,比URIEncoding要灵活一点,比如body已经指定了UTF-8,那么上面解码转码的方式还会是乱码,因为这个属性已经指定了字符集utf-8,解码也必须utf-8.
二、解析txt文档乱码。
windows下的文本文件字符集默认是GBK2312/GBK,在使用字符流或字节流读取文本文件的时候,文本文件可能是不同的字符集,比如有ANSI、GBK、UTF-8、Unicode等等,要想读入的数据不乱码,一点要保证读流传入的字符集和文本文件的字符集一致,这样不论文本文件的字符集是什么都可以防止乱码,所以要获取文本文件的字符集,比较专业一点的方法可以去找一下文件探测器,下面介绍一个比较实用的实例:
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("创建对象失败", e);
} catch (IllegalAccessException e) {
throw new RuntimeException("创建对象失败", 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;
// 设置到对象中
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以外的类型");
// 设置到字段中
field.setAccessible(true);
try {
field.set(obj, rv);
} catch (IllegalArgumentException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
datas.add(obj);
}
}
}
java exception 乱码_java 常见中文乱码问题解决相关推荐
- java button中文乱码_java解决中文乱码的几种写法
工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考. 首先定义一个汉语字符串 String zhName = " ...
- java mysql 乱码_java+mysql中文乱码解决
MySQL默认使用 ISO-8859-1 ( 即Latin1 ) 字符集,而JAVA内部使用Unicode编码,因此在JAVA中向MYSQL数据库插入数据时,或者读取数据时,都需要先转换一下编码方式: ...
- php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结
PHP+MySQL存储数据常见中文乱码问题小结 本文实例总结了PHP+MySQL存储数据常见中文乱码问题.分享给大家供大家参考,具体如下: PHP+MySQL出现中文乱码的常见原因: 1. MYSQL ...
- linux加水印乱码,linux java程序加水印及中文乱码方案(二)
上一篇介绍了在linux, centos图片加水印出现乱码的解决方案,<linux java程序加水印及中文乱码方案>, 在真实项目环境下,一是部署在虚拟机服务器,还有项目部署在docke ...
- Java解决下载中文乱码和URL中文乱码问题
解决浏览器下载中文乱码和URL中文乱码问题 下载中文乱码问题 URL路径中含有中文处理方式: 下载中文乱码问题 中文乱码是个让人头痛的问题,这里整理针对下载时,中文乱码问题,下面是Java对应的实现, ...
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...
- JAVA 关于PDF转图片出现中文乱码 boxpdf
JAVA 关于PDF转图片出现中文乱码public BaseFont CreateBaseFont() {BaseFont bfChinese = null;try {//如果有乱码去检索你的程序中是 ...
- tomcat8日志乱码_Tomcat日志中文乱码怎么解决?
Linux系统中文语言乱码,是很多小伙伴在开始接触Linux时经常遇到的问题,而且当我们将已在Wndows部署好的项目搬到Linux上运行时,Tomcat的输出日志中文全为乱码(在Windows上正常 ...
- HTML编程出现乱码,html中文为什么会乱码?html中文乱码怎么解决?
html中文乱码一般是因为编码格式不匹配.或没有设置编码造成的.解决方法:1.在HTML文件头中使用meta标签把HTML编码方式设置为utf-8:2.使用网页编辑器打开文件,设置统一的编码格式. 很 ...
最新文章
- 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理
- 科大讯飞CV赛baseline:图像分类实践+0.55
- CSS3背景线性渐变
- 未来数据中心的选择:宽带多模光纤(WBMMF)
- java用毫秒数做日期计算的一个踩坑记录
- oracle sql developer sid,登录 Oracle SQL Developer
- linux下VMware_Tools虚拟机工具的安装
- 集成Swagger(API)---SpringBoot
- stl vector 函数_vector :: crend()函数以及C ++ STL中的示例
- linux下如何查看某个容器的详细信息?
- MailMail正式发布!注册码免费发放活动开启!(已结束~~不要再回复咧~)
- 【渝粤教育】国家开放大学2018年秋季 1141t工程经济与管理 参考试题
- 通达信波段王指标公式主图_通达信波段王+精准买卖提示主图指标公式
- 超级终端连接华为交换机_win8系统教你实现用超级终端连接华为交换机的超详细图文教程...
- 使用LP Wizard制作allegro PCB封装的步骤
- 使用vue构建组件化开发项目
- Android 9.0 蓝牙配对流程
- Unity3D场景对象无法显示
- 【BZOJ1062】糖果雨(NOI2008)-数形结合+二维树状数组
- 函数指针和指针函数有什么区别
热门文章
- jemter安装Transactions per Second和Response Times Over Time插件
- VS2015 error LNK2019	无法解析的外部符号 _WinMain@16,该符号在函数 int __cdecl invoke_main(void)
- java catch getm_Java------异常处理机制
- sock 文件方式控制宿主机_浅析Docker运行安全
- vue图片宽高自适应_Echarts图标宽度变成100px,让图表宽度随着父元素自动适应,Vue实时监听宽度的变化,这可能是史上最好的解决方案!...
- 画图怎么调整速度_初学者画图不流畅,线条毛躁生硬,而且手总抖怎么破?
- stm32之USB应用实例(官方例程资料下载使用)
- MySQL / 各种锁
- 虚拟机硬盘启动计算机后黑屏,高手亲自教告诉你win7虚拟机启动后黑屏的操作方案...
- android qq分组展开,Android仿qq分组管理的第三方库