Javaweb项目中文乱码总结
在项目开发中,经常会遇见中文字符串乱码出现,比如:从前台传到后台出现乱码,从后台存入数据库出现乱码,从后台到页面展示出现乱码。为了以后避免遇到类似问题,我们有必要对字符串从页面到数据,从数据库到页面,字符串会经过哪些编码关卡做个整理。
1.从页面到后台出现中文乱码
从页面提交数据到后台,会存在两种提交方式——get和post。针对这两种提交方式,会有不同的编码处理过程。
get请求,经过Tomcat默认编码(tomcat8之前默认编码是ISO-8859-1,tomcat8之后改为UTF-8)进行前台数据编码,因为tomcat版本不同,我们做的操作也不一样,那么我们先说说tomcat8版本之前的做法,首先,我们在tomcat安装目录下找到sever.xml文件,同时在该文件中找到<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />代码,在该代码中添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。修改后的代码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
post请求,request.getParamter()获取页面数据时,默认以ISO8859-1编码,针对这种情况,为了解决所有页面编码问题,我们可以写EncodingFilter进行request请求拦截,同时对所有接收的数据进行统一编码设置。关于该Filter的写法,不是此处详解,大家可以自行百度。
2.从后台到数据出现中文乱码
通常出现这种情况,多数是由于数据库的问题,因为前台传回来的数据通过上个步骤已经没问题,只要不做特殊处理,就不会出现中文乱码问题,但也有特殊情况,比如我最近遇见的,poi导入excel文件,后台接收时,遍历每行每列数据返回Object类型,需要用String强转存入数据库中,而问题就出现在这里,String存储数据时,如果不指定编码格式,会采用当前系统默认编码方式,据我查阅,windows平台的默认编码方式:gb2312,linux平台默认编码方式:utf-8。怎么去查询两个平台的默认编码。
windows下,我们可以写个demo,代码如下:
public static void main(String[] args) {Properties p = System.getProperties();System.out.println(p.getProperty("file.encoding"));}
linux下,通过命令:locale
针对windows平台处理方式:
new String(((String) Obejct).getBytes(),"utf-8");
这步没问题了,剩下数据库了。在这一步我就遇见了大麻烦,出现的问题:在本地上传excel到数据库(mysql)没问题,而上传linux云服务器上(数据库也是msyql)就出现了乱码,经查阅资料,解决方法如下:
a.查询linux服务器上mysql的数据库默认编码,代码如下:
show variables like 'character%';
效果如下:
b.修改my.cnf文件,代码如下:
vim /etc/my.cnf
效果如下:
在红色框标识的代码下,添加如下代码:
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
重启mysql服务器(linux服务器版本:Centos 7),代码如下:
systemctl restart mysql.service
如果遇见一直没有反应,则先关闭在启动达到重启效果,代码如下:
systemctl stop mysql.service //关闭服务器
systemctl start mysql.service //启动服务器
3.从后台到页面出现乱码
可以在1步骤中的EncodingFilter中添加代码对response编码,示例代码如下:
response.setContentType("text/html;charset=utf-8");
转载于:https://www.cnblogs.com/yixtx/p/8426131.html
Javaweb项目中文乱码总结相关推荐
- 解决javaweb Tomcat中文乱码的完整思路。
相信很多初学者在刚开始使用Tomcat的时候都被中文乱码问题所困扰过,我曾经也遇到了这个问题,苦苦搜寻各大社区,看了无数帖子,结果依然没有解决问题.原因有两个,一是我比较笨<,二是确实这个问题过 ...
- java web开发传智书城项目中文乱码
干啥啥不行,乱码第一名! 引入JS文件乱码 Filter造成的乱码问题 数据库的乱码 引入JS文件造成的乱码问题 Filter造成的乱码问题 信息输出到数据库造成的乱码问题 起初遇到这些乱码问题的时候 ...
- tomcat启动乱码及访问项目中文乱码终极解决方法
现在我们会发现部署在服务器上的tomcat启动时或者访问项目时都会出现乱码的情况,今天小编就整理了解决这些乱码的解决办法. 1.解决tomcat启动时黑框中出现乱码: (一般tomcat出现乱码都是字 ...
- java项目乱码_JavaWeb应用项目中文乱码的解决
在把web项目成功部署到云主机后,通过浏览器成功地访问到了你的网站,却发现页面里本该由servlet传过来的中文参数值显示成了 ??? 乱码.这是什么原因呢? 这可能是由于你的web项目所在系统的字 ...
- 东方通 启动服务访问不到_东方通 部署项目 中文乱码 问题解决
背景: 做完项目国产化,在给客户部署的时候,客户发现,大量中文请求出现乱码问题 国产化环境采用,银河麒麟+人大金仓+东方通+Redis+火狐 排查手段: 第一步: 排查火狐问题,在本地启动项目,然后通 ...
- Tomcat 部署了web项目中文乱码
本地Tomcat 启动,网页端的中文传到后台显示乱码. 查询前段已经设置了 UTF-8格式, 后台收到中文的依然是乱码,原来是Tomcat的配置问题. 修改Tomcat的配置文件server.xml ...
- eclipse导入项目中文乱码
以下全部改成UTF-8编码格式 1.Window->Preferences->General->Workspace->Text file Encoding,修改成UTF-8 2 ...
- 项目中文乱码(jdk18乱码)
在jdk18中配置完上面也可能那个会有问题.18默认为gbk编码. 需要在另外的配置 在输入框内输入-Dfile.encoding=GBK
- weblogic部署项目中文乱码
解决方式在配置文件中添加如下配置 bin/startWebLogic.sh 即可解决此问题 JAVA_OPTIONS="${JAVA_OPTIONS} -Dfile-recoding=UTF ...
最新文章
- jquery下载教程
- 泛型(派生子类,泛型通配符,类型擦除)
- 《Python编程初学者指南》——1.6 回到Game Over程序
- python 把带小数的浮点型字符串转换为整数的解决方案
- 解读Raw Socket
- Vue Nuxtjs Cannot set property 'render' of undefined解决方法
- android横向排列 间隙,Android开发消除横向排列的多个Button之间的空隙
- 4.1 卷积神经网络调参-adagrad_adam
- C# 设置Word文档背景(纯色/渐变/图片背景)
- 元宇宙会是一场噩梦吗?
- MySQL事务操作原理与用法详解
- 影响历史进程的三只苹果
- 如何将整个splitcontainer控件缩小_将绣球花养成花球,整个夏天都是花团锦簇,教你如何将它调成蓝色...
- smart原则_如何利用SMART原则制定适合自己的高效学习计划
- linux 搜狗输入法变繁体字,搜狗输入法变成繁体字怎么办
- UMLChina公众号文章精选(20220126更新精选)
- 当C++遇上AUTOSAR编码规范,你的安全我来护航
- 输入一个数,判断它是否是素数,如果是素数输出yes,否则输出no
- 前端入门【HTML5】
- js百度地图鼠标绘制工具条库
热门文章
- python输出图像plt_Matplotlib(pyplot)savefig输出空白图像
- python动态人脸识别_python3.8动态人脸识别
- java调度问题的贪心算法_java代码,多机调度问题,怎么解释
- macos catalina cdr下载_这个开源神器可快速帮你安装 MacOS 虚拟机
- 计算机建模报告,计算机三维建模及分析实验报告单.doc
- python代码范文_Python any()用法及代码示例
- css就近原则_CSS的引入方式和优先级
- 301与302页面重定向
- python类中导入库_python导入库的具体方法
- python层次聚类_python中做层次聚类,使用scipy.cluster.hierarchy.fclusterdata方法 | 学步园...