Java web中常见编码乱码问题(二)
根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例:
案例分析:
2、输出流写入内容或者输入流读取内容时乱码(内容中有中文)
原因分析:
a、 如果是按字节写入或读取时乱码,应该先检测系统编码是什么样的,看看是否支持中文编码的字符集。
System.out.println(System.getProperty("file.encoding"));
a1、如果是不支持中文的就要设置jvm编码了,设置方法:
Windows环境就在catalina.bat配置:
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
Linux环境就在catalina.sh配置:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8"
设置好之后,应该就没什么大问题了。(注意:读取内容要转成字符串的形式,要指定字符集,如下图:
a2、如果是支持中文编码的字符集,还出现乱码的话,首先要考虑a1中的注意事项,其次改换字符集为UTF-8,全面支持中文,
不会有漏洞。
b、如果是按字符写入或读取时乱码,那么写入和读取应指定同一字符集编码(推荐是UTF-8)。example:
//通过字符流来写入字符
String charset = "UTF-8";
FileOutputStream fout = new FileOutputStream("F:/test.txt");
OutputStreamWriter writer = new OutputStreamWriter(fout, charset);//指定字符集编码
writer.write("这就是本该拼搏的年纪,却想得太多,做得太少! "); //读取字节转换成字符
FileInputStream fis = new FileInputStream("F:/test.txt");
InputStreamReader reader = new InputStreamReader(fis, charset);//指定字符集编码
StringBuffer content = new StringBuffer();
char[] buf = new char[64];
int len = -1;
while ((len = reader.read(buf)) != -1) {
content.append(buf, 0, len);
}
System.out.println(content.toString());
如果没有指定就会获取系统编码,就有可能乱码,解决方法可以参照a。
3、数据库乱码
这种情况就很简单了,可以查看这篇博文MySQL 插入数据时,中文乱码问题的解决
从上面可知,乱码问题并不难解决,搞清楚源头就好。其中要注意两个点,再次提醒:
1、最好指定好系统默认编码,否则没有设置编码的时候会获取当前系统的编码。(当你在windows中不会乱码,但是移植到linux中就可能会出现乱码)
2、设置好tomcat中uriencoding属性,配置全局编码过滤器会解决大部分请求数据乱码的问题。
Java web中常见编码乱码问题(二)的更多相关文章
- Java web中常见编码乱码问题(一)
最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...
- JAVA WEB 中的编码分析
JAVA WEB 中的编码分析 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-co ...
- 深入分析Java Web中的编码问题
编码问题一直困扰着我,每次遇到乱码或者编码问题,网上一查,问题解决了,但是实际的原理并没有搞懂,每次遇到,都是什么头疼. 决定彻彻底底的一次性解决编码问题. 1.为什么要编码 计算机的基本单元是字节, ...
- Java Web中的编码解析
在springmvc工程web.xml中配置中文编码 <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码--> <filter> <filter-name&g ...
- 【中文乱码】深入分析 Java Web 中的中文编码问题
深入分析 Java Web 中的中文编码问题 1.几种常见的编码格式 1.1 为什么要编码 在计算机中存储信息的最小单元是 1 个字节,即 8 个 bit, 所以能表示的字符范围是 0 ~ 255 个 ...
- Java Web中解决乱码的方式
Java Web中解决乱码的方式 方式一:添加编码过滤器 package com.itmacy.dev.filter; import javax.servlet.*; import javax.ser ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 String fileName = "测试文件.doc"; String userAgent = request.g ...
- 深入分析Java Web中的中文编码问题
要对Java Web项目进行编码原因: 1.在计算机中存储信息的最小单位是1个字节,即8个bit,所以能表示的字符范围是0~255个. 2.电脑需要表示的符号太多.无法用1个字节完全表示. 要解决这个 ...
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
随机推荐
- QT链接数据库
在介绍QT与数据的链接问题上,我在这里就不介绍关于QT环境与mysql.sqlite3环境的安装步骤了,以下的所有的操作都是建立在你已经安装了所有环境的基础上的.好的,那我们就具体来看一看QT环境中怎 ...
- bzoj2125 最短路
Description 给一个N个点M条边的连通无向图,满足每条边最多属于一个环,有Q组询问,每次询问两点之间的最短路径. Input 输入的第一行包含三个整数,分别表示N和M和Q 下接M行,每行三个 ...
- bzoj4031 [HEOI2015]小Z的房间
Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...
- java 无法连接ftp服务器(500 OOPS: cannot change directory)
在使用java连接ftp服务器时可能会出现无法连接的情况,检查代码是没有错误的,这时就应该考虑一下服务器端的情况了: 首先用在本地打开命令窗口,输入:ftp ftp服务器IP,窗口会提示你输入用户名密 ...
- 深刻认识shift_ram IP core——图像处理学习笔记
在进行图像处理算法中,往往需要生成图像像素矩阵,这对于C语言来说可以直接用数据表示,但是对于verilog来说便不是那么容易了,硬件描述语言不比软件,它的核心不再算法,而是在于设计思想,加速硬件.在进 ...
- 关于quotename的用法
首先,sqlserver里的标识符有一定的规则,比如 你 create table abc 123(...) 那么中间含有空格,它不是符合规则的. 你会写做 create table [abc 12 ...
- linux系统资源限制
概述 拜读了小Y对ora-7445问题的解读,猛然惊醒发现自己对oracle运行在linux上的资源限制一直是朦朦胧胧的,以此文章督促自己深入了解. 1 limits.conf 和sysctl.con ...
- kafka java使用
首先添加maven依赖 Kafka <dependency> <groupId>org.apache.kafka</groupId> <artifactId& ...
- Windows下主机名和IP映射设置
如果需要添加域名和IP的对应关系可以在以下地方进行修改. 打开系统目录:c:/windows/system32/drivers/etc找到hosts文件,打开hosts文件并在最后面添加一条记录 例如 ...
- MySQL对innodb某一个表进行移动
(步骤:建表, 禁用表空间,复制表空间,重用表空间) mysql> desc test; +-------+-------------+------+-----+---------+---- ...