Java IO流使用过程中乱码问题总结
Java IO流使用乱码问题总结
- IO流使用过程中出现乱码问题
- 乱码发生的根因
- 常见io流中文乱码场景及解决方法
- FileInputStream 和 FileWriter 读取文件时中文乱码问题
- 序列化与反序列化时中文乱码问题
IO流使用过程中出现乱码问题
初学者在学习IO这一章节时候经常可能会碰到读取文件中文乱码的问题。这个东西比较简单,大佬们都懒得写,索性我就简单的说下这个事情,希望能为一些人解惑。
乱码发生的根因
发生中文乱码的原因是 文件存储数据的编码方式 跟 读取文件数据时解码方式方式不同。
比如常见的中文乱码问题,原因总结归类就两种:
- 一种是 数据按照GBK编码存储在文件中,以UTF-8编码去读取导致中文乱码。
- 另一种是 数据存储是UTF-8编码,解码使用GBK导致乱码。
中文乱码根因:
GBK编码中用2个字节表示一个中文字符,UTF-8编码中使用3个字节表示一个中文字符。系统中数据都是以字节的形式存储在文件中,文件的大小也是按字节算。假如一个文件有6个字节,GBK编码就是3个中文字符,UTF-8编码则是2个中文字符。所以只要编码解码的方式不一致,就会出现中文乱码问题。
一般集成开发环境 如IDEA 和 Eclipse都是默认使用UTF-8编码。
我们一开始学习IO流的时候主要就是对磁盘文件做io操作,读写数据。读写过程中如果碰到读写的编码不一致就很容易出现中文乱码情况。相信很多初学者对此烦恼过,下面就总结一下使用IO流时常见的中文乱码情况。
常见io流中文乱码场景及解决方法
FileInputStream 和 FileWriter 读取文件时中文乱码问题
可能原因:
- 读取本地磁盘中的文件是GBK编码,而读取的方式是UTF-8。
- 文件是UTF-8编码,但是读取文件的类java文件是GBK方式,也会导致乱码。
解决方法:
- 使用InputStreamReader 中带编码方式参数的构造器创建对象读取文件数据 (InputStreamReader的使用可以查看api文档或者百度案例)
- 修改文件为UTF-8编码格式,文件另存为。。可以选择编码方式,或者Notepad++中也可改变文件编码方式。
- 检查所有java文件编码方式,都调成UTF-8。
序列化与反序列化时中文乱码问题
可能原因: 序列化对象的类 跟 反序列化对象的类编码方式不同,看IDEA右下角类的编码方式。虽然IDEA默认是UTF-8,但有些同学不小心修改了几个java文件编码方式为GBK了,导致序列化类和反序列化类编码方式不同,就会出现中文乱码的情况。
解决方法: 将序列化类编码方式和反序列类的编码方式都调成UTF-8。
Java IO流使用过程中乱码问题总结相关推荐
- java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别
到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...
- java io流顶层_Java中的IO流(一)
一,IO流的分类 A,按照操作的对象不同可分为字节流与字符流 B,按照流的方向不同可分为输入(指从外部存储设备拿文件到内存)流也叫读与输出(指从内存把文件写入到外部存储设备)流也叫写 注:字节流可以操 ...
- Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...
[论述题]请根据第一次平时作业的选题,结合第二次课内容,自拟一个论文提纲. [单选题]在 switch ( expression )语句中, expression 的数据类型不能是 ( ) [单选题] ...
- [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别
[重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...
- Java IO流大闯关--IO流的常用实现类
这个系列的博客主要是对Java高级编程中IO流相关的知识点做一个梳理,内容主要包括File类.IO流原理及流的分类.文件流.缓冲流.转换流.标准输入输出流.打印流.数据流.对象流.随机存取文件流.NI ...
- Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream
Java IO流学习总结六:ByteArrayInputStream.ByteArrayOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ar ...
- java io流 教程_Java基础教程:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...
- Java IO: 流
转载自 Java IO: 流 原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO流是既可以从中读取,也可以写入到其中的数据流. ...
- Java基础17:Java IO流总结
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/80201802 这位大侠,这是我的公众号:程序员江湖 ...
- Java IO流简介
Java中的流是什么? java中的流是一个抽象的概念,在java的程序中需要把文件从一个设备传输到另一个设备上,这个设备可以是内存,程序,文件,网络.把在这些之间传输的叫做流.官方的解释:流是一组有 ...
最新文章
- python encoder_python JSONencoder
- 微信公众平台 图片 java_Java微信公众平台之素材管理
- 春节抽空读了8本书,只有这本书我1字不落的读完了!(上)
- class action extends mysql{_java Action 请求封装(二)
- vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法
- feedback vertex set problem (FVS) 反馈顶点集问题 是什么
- risksystem_环境风险评价系统(RiskSystem)
- selenium安装和下载
- csSEnet注意力网络
- Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象
- keras教程_Keras教程
- 充分利用居室空间 让阳台尽显万种风情
- python爬虫获取服务器信息,通过python自动化获取服务器信息,并写入到excel(示例代码)...
- 一间计算机教室用英语怎么说,一间电脑室是什么意思
- Facebook要来东区挖人了,微软准备好了吗?
- qemu 信号线程化
- 微信小程序使用video播放视频失败
- 用python-OpenCV做一个魔方墙找茬程序(3D视眼训练) 版本2.0:加入倒计时功能
- 高房楼噪音测试软件,高层住宅噪音测试:11层分贝数高于其他楼层
- 2023年十大热门婚恋交友软件,真实靠谱相亲app排行榜
热门文章
- Axure 9 实战案例,母版的应用 3,用母版绘制高逼格APP原型
- redis java 视频教程_Redis基础与提升视频教程
- 《Redis视频教程》(p2)
- pr用什么显卡比较好_学ps pr ae用什么电脑比较好?有什么配置要求?
- ENVI提取植被指数(NDVI)的两种方法
- ICLR 2022 | 合作博弈新范式:为可解释性等机器学习估值问题提供新方法
- ProE/Creo免费插件 MCADEx Tools 5.0
- 20170814二维码的识别
- App测试流程及测试点
- ExtJs6 为Ext.Img对象添加单机事件