1,先记录从文件中(new File()的时候)读取数据逐级包装直至缓冲字节输入流(new BufferReader())并设置编码格式

//文件路径 String path = "??????????????????"; //读取文件 File file = new File(path); //包装成文件字节输入流 FileInputStream fis = new FileInputStream(file); //下边这个流可以理解为从字节流迈向字符流的一个桥梁 //并且InputStreamReader在创建对象的时候可以传入想要的字符编码的参 //数这里是“utf-8” InputStreamReader isr = new InputStreamReader(fis,"utf-8"); //再将InputStreamReader包装进BufferReader中 BufferedReader br = new BufferedReader(isr);
遇到了一个在eclipse使用过程中发生的转码问题 ,安装完eclipse后Project→Properties→Resource中写着默认的编码格式为GBK,我一直没有改成UTF-8,在学习过程中因为一直统一使用GBK编码 所以一直也没有出现问题
直到有一天我在汤姆猫上运行我学习Servlet中写的代码时发现一个有趣的现象
如果我使用response直接向服务器发送中文内容不会出现乱码
`resp.getWriter().println("<h1>我喜欢吃</h1>");
但是在使用BufferReader的readline()方法读取到中文内容时会出现乱码情况,我试过无论我修改IO流中读取字符的编码格式 还是修改整个项目的编码格式 都不能改变这个乱码问题
BufferedReader br = new BufferedReader(fr); br.readLine()//下图中“tom!”的那一行
请教了老师,得到了新的解决办法
在本类中加入一行代码,这句代码的意思是查看VM启动参数,运行后在控制台上就可以看到下图中的信息(只截了部分片段)可以看到有一个属性叫file.encoding它的值是GBK
意思我个人分析可能是我创建项目的时候使用的是GBK编码 然后自己也运行过这个项目 .class的字节码文件已经生成了 这时候如果只在项目右键Properties进去修改编码格式为时已晚
//查看VM启动参数 System.getProperties().list(System.out);
老师给出了一个临时解决办法,在本类中将要出现乱码的那一行之前加上一行
System.setProperty("file.encoding", "utf-8");
将上文中提到的VM参数中file.encoding的值现改成utf-8
其实最根本的解决办法就是在项目创建之初就设定好编码格式,如果出现像我这样来不及的情况的话可以临时使用这个方法
Servlet提供了三大组件 servlet filer listener
在设置编码格式时 我们就可以预先设定一个全局范围内的过滤器,
创建Filter类 添加注解@WebFilter(eclipse在创建Filter类时会自动创建该注解) 注解的内容我这里直接写了/* ,表示本项目中所有请求都必须先经过这个Filter过滤
@WebFilter("/*")
public class EncodingFilter implements Filter {
public EncodingFilter() {
}
@Override
public void init(FilterConfig fConfig) throws ServletException {
//当Filter被初始化的时候调用,打印输出
//Servlet默认是懒加载模式
System.out.println("encodingfilter is initialized........");
}
@Override
public void destroy() {
//当filter被销毁的时候调用,打印输出
System.out.println("encodingfilter is destoryed.......");
}
//doFilter方法就相当于一个筛子
//一共四行代码 分别是我们提出的三个要求,和一条放行代码
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//设置解析报文的编码格式
request.setCharacterEncoding("utf-8");
//设置返回响应使用的编码格式
response.setCharacterEncoding("utf-8");
//告诉浏览器响应内容是text和html类型的文件 编码格式是utf-8
response.setContentType("text/html;charset=utf-8");
//放行请求
//其中包含了请求从哪里来 准备到哪里去的相关信息
chain.doFilter(request, response);
}
}
过滤器的功能除了简介的注解形式之外,Servlet中还有一种基于web.xml文件的形式,打开web.xml文件,在根目录下加入以下代码
<filter> <!-- 标签的name --> <filter-name>encode</filter-name> <!-- 标签的类的位置 --> <filter-class>com.zyj.day02.EncodingFilter</filter-class> </filter> <filter-mapping> <!-- 对应得标签的name --> <filter-name>encode</filter-name> <!-- 声明作用域的范围 --> <url-pattern>/*</url-pattern> </filter-mapping>
虽然内容比较简单 但写起来也算是比较繁琐 所以建议还是使用注解的形式来实现功能
值得一提的是
通过在filter类的init方法中添加了一句打印语句我们发现,如果你既在类名上标明注解 又在web.xml文件中添加了配置,那么当有请求过来的时候,我们会在控制台上发现init方法执行了两次,虽然目前看来没有什么问题 但总的来说 二者有一个即可。
问题描述:
当我在servlet中连接好数据库 打算实现一个写入的功能 一个读取的功能
本来是可以通过sql语句顺利的写入中文,在数据库中查询到中文,还可以读取数据打印在控制台上 整个过程中都没有出现乱码问题 但当我想使用直接从数据库中读取中文 “小张” 作为我项目中登录功能的账号时 发现无法读取到正确的数据 以至于判定我在账号框输入的“小张”不存在 正在初学阶段 大体知道各个流程中的各个编码环境 但还是没有找到是哪个环节的编码格式与众不同
找到了一个解决办法 :
在项目中druid-config.properties(阿里云德鲁伊的配置文件)中的url属性后拼接一个?characterEncoding=utf-8 设置读取mysql数据库中数据的时候的编码格式
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://你的端口号:3306/estore?characterEncoding=utf-8 username=???mysql数据库的账号 password=???mysql数据库的密码 maxActive=30 maxWait=3000
下面在给大家补充介绍:java中常见的中文乱码总结
乱码现象产生的原因:由于编码方式的不同,才会出现乱码的情况。
哪里会产生乱码:1.页面 2.url地址 3.数据库乱码 4.数据提交(form,ajax) 5.开发工具
怎么解决:
1.统一开发工具的编码设置
2.设置应用服务器的编码方式,如:端口号,编码方式
3.数据库本身的编码方式
4.强制设置request和response的数据编码方式(同时也可以采用过滤器的方式拦截所有的编码方式)
5.采用代码方式强转数据编码方式(UrlEncode.encode("你好","utf-8"))
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# java 中文乱码
# java编码
# Java 解决读写本地文件中文乱码的问题
# Java读取properties配置文件时
# 出现中文乱码的解决方法
# Java读写.properties文件解决中文乱码问题
# Java读写txt文件时防止中文乱码问题出现的方法介绍
# 解决Java原生压缩组件不支持中文文件名乱码的问题
# java页面中文乱码的解决办法
# Java Web开发项目中中文乱码解决方法汇总
# Java中HttpServletResponse响应中文出现乱码问题
# java中文乱码之解决URL中文乱码问题的方法
# 出现乱码
# 数据库中
# 我在
# 解决办法
# 的是
# 过程中
# 台上
# 图中
# 开发工具
# 小张
# 就可以
# 有一个
# 装进
# 汤姆
# 类中
# 端口号
# 器上
# 我想
# 如果你
# 出了
相关文章:
外贸公司网站制作,外贸网站建设一般有哪些步骤?
免费网站制作appp,免费制作app哪个平台好?
建站主机核心功能解析:服务器选择与网站搭建流程指南
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
制作表格网站有哪些,线上表格怎么弄?
c# 在高并发场景下,委托和接口调用的性能对比
建站主机CVM配置优化、SEO策略与性能提升指南
如何在香港免费服务器上快速搭建网站?
宿州网站制作公司兴策,安徽省低保查询网站?
建站之星免费版是否永久可用?
制作网站公司那家好,网络公司是做什么的?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
,交易猫的商品怎么发布到网站上去?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
建站org新手必看:2024最新搭建流程与模板选择技巧
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何解决ASP生成WAP建站中文乱码问题?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何在万网开始建站?分步指南解析
如何做网站制作流程,*游戏网站怎么搭建?
制作公司内部网站有哪些,内网如何建网站?
制作宣传网站的软件,小红书可以宣传网站吗?
网站制作公司,橙子建站是合法的吗?
宝塔新建站点报错如何解决?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何快速完成中国万网建站详细流程?
宝塔建站后网页无法访问如何解决?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
测试制作网站有哪些,测试性取向的权威测试或者网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
建站之星2.7模板:企业网站建设与h5定制设计专题
如何登录建站主机?访问步骤全解析
详解jQuery停止动画——stop()方法的使用
视频网站制作教程,怎么样制作优酷网的小视频?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
安云自助建站系统如何快速提升SEO排名?
C++如何使用std::optional?(处理可选值)
如何快速搭建自助建站会员专属系统?
如何在腾讯云服务器上快速搭建个人网站?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
网站制作壁纸教程视频,电脑壁纸网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
TestNG的testng.xml配置文件怎么写
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
中山网站推广排名,中山信息港登录入口?
*请认真填写需求信息,我们会在24小时内与您取得联系。