使用ByteArrayOutputStream解决输出乱码问题 - CSDN博客
文章推薦指數: 80 %
先来看一段看似没问题的代码这是一个使用utf-8编码的文本内容,下面使用输入流读取文件内容,打印到控制台。
使用ByteArrayOutputStream解决输出乱码问题
DanceDonkey
于 2021-10-2321:49:41 发布
3265
收藏
1
分类专栏:
Java
文章标签:
java
io
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43750656/article/details/120926673
版权
Java
专栏收录该内容
46篇文章
0订阅
订阅专栏
先来看一段看似没问题的代码
这是一个使用utf-8编码的文本内容,下面使用输入流读取文件内容,打印到控制台。
FileInputStreamis=newFileInputStream("C:\\Users\\Administrator\\Desktop\\char.txt");
byte[]bytes=newbyte[1024];
intread=is.read(bytes);
while(read!=-1){
System.out.println(newString(bytes,0,read));
read=is.read(bytes);
}
is.close();
运行结果:这看似没有问题的运行,实则潜藏着巨大隐患。
utf-8编码在存储中文字符的时候,一个中文字符会分配3或4个字节。
那我整个文件有5个字符,最大也就只占20个字节,我创建了一个1024字节的数组,那肯定是一次性就能读完的,没有问题。
但当我把字节数组的长度该为5时,此时,只能一次读取5个字节,那么将这5个字节的内容,在用utf-8编码读取的时候就会发生乱码问题。
将数组大小设置为5后读取。
ByteArrayOutputStream解决上述问题
FileInputStreamis=newFileInputStream("C:\\Users\\Administrator\\Desktop\\char.txt");
ByteArrayOutputStreambaos=newByteArrayOutputStream();
byte[]bytes=newbyte[1];
intread=is.read(bytes);
while(read!=-1){
baos.write(bytes,0,read);//内部会自动扩容
read=is.read(bytes);
}
System.out.println(newString(baos.toByteArray()));
baos.close();
is.close();
创建一个ByteArrayOutputStream对象,使用字节数组读取输入流内容时,将数组里面的字节数据写入到该对象中,该对象内部也维护了一个字节数据,并且会自动扩容。
那么当读取完毕时,我们再一次性将该对象内部维护的这个字节数据按照指定的编码转为字符串即可。
运行结果修改文件内容编码再测试此时需要在字节数组转字符串时指定编码
运行正常!
DanceDonkey
关注
关注
0
点赞
踩
1
收藏
打赏
0
评论
使用ByteArrayOutputStream解决输出乱码问题
先来看一段看似没问题的代码这是一个使用utf-8编码的文本内容,下面使用输入流读取文件内容,打印到控制台。
FileInputStreamis=newFileInputStream("C:\\Users\\Administrator\\Desktop\\char.txt");byte[]bytes=newbyte[1024];intread=is.read(bytes);while(read!=-1){.
复制链接
扫一扫
专栏目录
处理使用ByteArrayOutputStream读取文件中文乱码情况
Plan_D的博客
03-12
1万+
最开始:
ByteArrayOutputStreambaos=newByteArrayOutputStream();
intlength=0;
byte[]buffer=newbyte[1024];
while((length=is.read(buffer))!=-1){
baos.write(buffer,0,length);
}
is.close();
baos.close();...
inputstream流乱码_用ByteArrayOutputStream解决IO流乱码问题
weixin_42517019的博客
02-16
1437
IO中用ByteArrayOutputStream解决乱码问题--另一种解决乱码的方法IO中另外一种防止乱码的方法:使用ByteArrayOutputStream在创建ByteArrayOutputStream时,会自动创建一个以自动增长的缓存区,当数据读取完后再一起统一写出来,就不会有乱码的问题了importjava.io.ByteArrayOutputStream;importjava....
参与评论
您还未登录,请先
登录
后发表或查看评论
【使用ByteArrayOutputStream解决FileInputStream读取过程中的乱码问题】
最新发布
吾本樵夫的技术专栏
06-14
333
使用ByteArrayOutputStream解决FileInputStream读取过程中的乱码问题
IO中用ByteArrayOutputStream解决乱码问题
xcw931924821的专栏
02-01
1万+
IO中用ByteArrayOutputStream解决乱码问题
2011-03-0123:29
IO中另外一种防止乱码的方法:使用ByteArrayOutputStream
在创建ByteArrayOutputStream时,会自动创建一个以自动增长的缓存区,当数据读取完后再一起统一写出来,就不会有乱码的问题了
importjava.io.ByteArrayOutp
使用ByteArrayOutputStream解决IO乱码问题的踩坑记录
p15097962069的博客
01-29
830
使用ByteArrayOutputStream解决IO乱码问题的踩坑记录
ByteArrayOutputStream乱码问题解决
weixin_55175040的博客
04-01
1万+
ByteArrayOutputStream读取文件中文时乱码问题解决
当我们获取文件,通过输入流读取数据,并返回字符串回去
publicStringreadFiles(StringfileName){
FileInputStreaminputStream=null;
ByteArrayOutputStreamoutputStream=newByteArrayOutputStream();
Stringresult="";
使用ByteArrayOutputStream解决输出数据乱码
繁星呀
01-12
3万+
使用Socket的读入数据后直接输出数据乱码
使用FileInputStream读取数据
FileInputStreamfis=null;
try{
fis=newFileInputStream(newFile(".\\src\\static\\test.txt"));
//每次缓存3个字节,因为测试需要,通常写1024,这个看个人需求
byte[]buffer=newbyte[3];
intlen;
while((len=fis.re.
javabytearrayoutputstream乱码,Java写入ByteArrayOutputStream内存泄漏
weixin_32342639的博客
03-11
370
我正在将图像的字节写入ByteArrayOutputStream,然后通过套接字发送它。
问题是,当我做Java写入ByteArrayOutputStream内存泄漏ImageIO.write(image,"gif",byteArray);内存上涨非常多,还挺内存泄漏。
我送使用此ImageIO.write(image,"gif",byteArrayO);byte[]byteArray...
字节,字节数组输入输出流ByteArrayInputStream,ByteArrayOutputStream理解
wangzhantao的专栏
04-08
507
字节作为数据的一种表现形式可以与其他的数据表现形式转换
1字节理解
2字节与人类语言字符串转换(newString(byte[]s),String.toBytes())
3 文件与字节转换
从另一方面讲,任何东西都可以转为最小单位字节,然后做最终处理。
以下自己学习得到的观点,有错误的地方请指出
在通常操作用,字节接触的比较少,这里对于字节的理解...
使用ByteArrayOutputStream解决FileInputStream读取过程中的乱码问题
小福贵
09-15
5812
publicstaticvoidmain(String[]args)throwsIOException{
//1.read(byte[]b);是字节输入流中的方法,创建FileInputStream,关联a.txt
FileInputStreamfis=newFileInputStream("a.txt");
//2.创建内存输出流,将读到的数据写到内存输出
JAVA方法DataOutputStream.writeBytes(Strings)传递中文乱码问题
01-29
1万+
JAVA方法DataOutputStream.writeBytes(Strings)传递中文乱码问题解决方案
InputStream导出CSV文件中文乱码问题
three_m_zero_one_s的博客
09-16
551
InputStream导出CSV文件中文乱码问题问题描述解决方案
问题描述
用InputStream转换为MultipartFile并生成CSV文件的过程中,生成的CSV文件用Excel打开会出现中文乱码的问题,但用NotePad++打开时中文显示正常,用NotePad++打开文件并修改文本编码格式为UTF-8-BOM后保存,再用excel打开后显示也正常
解决方案
以CSV方式导出的文件中默认不含BOM信息,通过给将流的头部设置BOM标识(以EFBBBF开头的字节流)即可解决该问题
InputSt
用ByteArrayOutputStream解决IO流乱码问题
Littleree的博客
04-25
177
用ByteArrayOutputStream解决IO流乱码问题
base64乱码_用实例搞懂什么是base64编码原理,只需要三个步骤
weixin_39628343的博客
11-24
70
本文原创作者:源理君头条号:底层软件架构公众号:技术原理君开始在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇文章带领大家了解一下Base64的底层实现。
base64是什么东东呢?Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一,所以可以依据概括:它是一种编码方式,记住它不是加密的方式,它没有秘钥的概念,任何...
javaoutputstream乱码_java中FileOutputStream中文乱码问题解决办法
热门推荐
weixin_33785828的博客
02-24
4万+
java中FileOutputStream中文乱码问题解决办法java中FileOutputStream中文乱码问题解决办法使用FileOutputStream序列化可以直接向文件写入文本内容,代码如下:FileOutputStreamoutStream=newFileOutputStream(file);outStream.write(str.getBytes());outStream....
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022CSDN
皮肤主题:技术黑板
设计师:CSDN官方博客
返回首页
DanceDonkey
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
257
原创
1万+
周排名
6489
总排名
19万+
访问
等级
3267
积分
233
粉丝
177
获赞
88
评论
348
收藏
私信
关注
热门文章
vue3中的reactive函数声明数组
23907
axios实现同步请求
17863
EasyExcel使用模板文件填充数据
8252
BCryptPasswordEncoder的matches方法返回false
7963
使用DockerFile构建docker镜像挂载目录,数据卷同步
6268
分类专栏
springboot
28篇
前端
43篇
网络通信
12篇
数据结构与算法
20篇
事务控制
3篇
版本控制
6篇
Java
46篇
web
12篇
Mysql
22篇
开发工具
9篇
vue
4篇
spring
14篇
数据库
19篇
采坑记录
3篇
异常
5篇
设计模式
6篇
aop
2篇
多线程
8篇
日志
4篇
IO
3篇
Linux
14篇
微服务
5篇
权限
1篇
消息中间件
3篇
搜索引擎
4篇
运维
4篇
容器虚拟化
8篇
springsecurity
4篇
爬虫
3篇
定时任务
1篇
最新评论
EasyExcel使用模板文件填充数据
test_leo:
test04(){
ExcelWriterworkBook=EasyExcel.write("1.xlsx").withTemplate(template).build();
}
注意要取消读取文件的xx.class
[org.springframework.web.HttpMediaTypeNotAcceptableException:Couldnotfindacceptablerepresentati
未来的大猩猩:
这是为啥呀,原理是什么呢
axios实现同步请求
独战:
await必须搭配async使用,async已经标注了该函数内有异步任务,只能说async函数内的代码是同步执行的的,但是这个函数不会阻塞主进程的代码执行
axios实现同步请求
独战:
确实,这只是让代码看起来更整洁像同步一样
axios实现同步请求
weixin_52296149:
这是promise语法糖不能说是同步吧
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Spring4.3ObjectProvider接口
富文本编辑器wangEditor回显问题
基于Vite3.0创建Vue3项目
2022
10月
1篇
09月
11篇
08月
15篇
07月
16篇
06月
11篇
05月
14篇
04月
7篇
03月
5篇
02月
4篇
01月
3篇
2021年74篇
2020年95篇
2019年2篇
目录
目录
分类专栏
springboot
28篇
前端
43篇
网络通信
12篇
数据结构与算法
20篇
事务控制
3篇
版本控制
6篇
Java
46篇
web
12篇
Mysql
22篇
开发工具
9篇
vue
4篇
spring
14篇
数据库
19篇
采坑记录
3篇
异常
5篇
设计模式
6篇
aop
2篇
多线程
8篇
日志
4篇
IO
3篇
Linux
14篇
微服务
5篇
权限
1篇
消息中间件
3篇
搜索引擎
4篇
运维
4篇
容器虚拟化
8篇
springsecurity
4篇
爬虫
3篇
定时任务
1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
DanceDonkey
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:--)
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值
延伸文章資訊
- 1ByteArrayOutputStream (Java SE 10 & JDK 10 )
This method is equivalent to #toString(charset) that takes a charset . An invocation of this meth...
- 2java.io.ByteArrayOutputStream.toString java code examples
return result.toString("UTF-8");
- 3使用ByteArrayOutputStream解决输出乱码问题 - CSDN博客
先来看一段看似没问题的代码这是一个使用utf-8编码的文本内容,下面使用输入流读取文件内容,打印到控制台。
- 4java - Convert a byte array from Encoding A to Encoding B
1) raw: ByteArrayOutputStream containing bytes of a BINARY object sent to us from clients. The by...
- 5Java ByteArrayOutputStream.toString()指定字符集转换为字符串
charsetName:指定字符集(utf-8,GB2312等)。 返回. 从缓冲区内容解码的字符串。 异常. UnsupportedEncodingException :不支持指定的字符集 ...