Java读取文件中含有中文的解决办法

java读取文件中文乱码 立即下载

                    Java读取文件中含有中文的解决办法

       折磨了一天的问题,终于在黄昏的时候解决了,现在一吐为快。

       众所周知,java的中文问题一直是一个老大难的问题,这个现象可以在csdn中java论坛里关于中文乱码的提问率就可以了解到,甚至软件巨人IBM专门开辟了一个解决中文问题的专区,作为一个俗人(一直梦想希望想金凯利那样成为一个“冒牌天神”,只是一直没有成功,也许是因为上帝不照顾中国吧),我也为同意的问题困扰,好在今天解决了。

       随着我对.net平台的彻底放弃(只是生活所迫,毕竟我还要生活),将原有的资源转到Java平台上来是我当前的一个重要任务之一,说到这里,不得不承认.net对中文问题解决的很好,虽然偶尔也会出现乱码。

       问题是这样的,我的box(http://www.ibeyond.org/box/)原来是使用asp.net写的(当时只是为了尝试新的技术),当时为了数据的可移植性我放弃了使用数据库,将全部数据保存为UTF-8编码的文本文件,在.net中读取这种文件秩序只要指定打开文件的编码方式,中文问题就可以避免。但是按照我以前的思维,java中不是这么作的,java中都是先读取后转换的,最后的结果证明我错了,看来经验主意害死人呀。

File f=new File((new BoxConfig()).getBaseDir()+"Data//"+request.getParameter("ID")+".inc");

BufferedReader reader = new BufferedReader(new FileReader(f));

String line;

while((line=reader.readLine())!=null){

    strContent+=line;

}

这是我最初的代码f就是我要读取的UTF-8格式的文本文件,这一天中经过了无数次的尝试,包括new String(strContent.getBytes("UTF-8"))(其中尝试了N种编码转换),System.setProperty("file.encoding","UTF-8")(其中指定了N种编码转换),都失败了,其中甘苦相信各位经历过被程序折磨的各位看官都有所了解,在此略过。终于在Google中无数次查询中得到了一个后来被证明很重要的一条信息“读取文件时指定字符编码”,一语点醒梦中人,.net中不就是这么实现的吗?走了一圈弯路终于解决了这个问题。

File f = new File("E://eclipse//workspace//box//Data// 2003-3-7 -100.inc");

InputStreamReader  read = new InputStreamReader (new FileInputStream(f),"UTF-8");

BufferedReader reader=new BufferedReader(read);

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

通过打开文件是指定文件编码的方法把这个问题轻松的解决了。

    最后总结一下:java要读取数据流的时候一定要指定数据流的编码方式(至少读取String流的时候要这么作。

    你也许可以通过Http://www.ibeyond.org/得到相关信息,你也可以通过csdn@ibeyond.org和我联系。

    本文的版权归iBeyond所有,转载时请注明转载出处。

JAVA解决URL路径中含有中文的问题 JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。 立即下载

相关推荐

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 407

Java中分别用字节流和字符流去读取文件中的中文

字符流FileReader是不能手动设置编码方式的,这里能输出是因为文档是以UTF-8的编码方式保存的,编译器也是默认UTF-8的编码方式,当文档为别的编码方式(如GBK) 保存时,编译时要更改编译器的编码方式,要使用另一种字符流InputStreamReader来代替,如下。最后如果想要输出文档中的汉字的话,我们把字节数组以UTF-8编码方式去解码,我们就可以通过这些数字的到相应的汉字,我们通过创建一个字符串对象接收字节数组和编码方式,再直接输出该变量名。再加一点:文件的编码保存形式在另存为中可以更改。

cxzos8i17的博客 1522

ros2 humble cartographer 2D激光雷达建图

Cartographer是一个支持多平台和传感器配置的SLAM的系统。 本文主要讲述在ros2 humble系统上cartographer的安装方法,以及如何配置参数实现自己的ros2 bag包的离线建图。

weixin_43087302的博客 6939

Java笔记-解决读取文件时中文乱码问题(InputStreamReader设置编码)

Java一般读取文件时使用如下代码: InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("xxx"); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream); while(reader.ready()){ String line = reader.readLine(); Sys

IT1995的博客 2万+

激光可燃气体传感器:核心技术环节分析

激光可燃气体传感器核心技术涵盖七个维度:1)TDLAS光谱吸收与调制技术(检测下限ppm级);2)DFB激光器与双闭环温控系统(波长稳定性±0.0036nm);3)微弱信号处理技术(信噪比提升60dB);4)环境补偿算法(温压补偿误差<±1%);5)本质安全防爆设计(ExiaIICT4Ga等级);6)智能边缘计算(STM32L476芯片);7)多重性能验证(响应时间<1秒)。通过微型化、多气体检测等创新,该技术已在工业安全等领域替代传统方案,实现高精度检测。(149字)

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1043

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1128

读取java文件里面所有中文

tempString = "3试试";* 看下自己IDEA的文件格式。最近做国际化,提取代码的中文出来。

沉淀的博客 778

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 491

Java中文异常——全解

在读取或写入文件时,需要指定正确的字符集。可以使用InputStreamReader和OutputStreamWriter来指定字符集,例如:UTF-8类型的读取。如果在处理中文字符时出现乱码或无法正确显示的情况,很可能是由于字符集不匹配导致的。Java中常用的字符集是UTF-8和GBK,确保输入、输出和存储的字符集一致。如果需要对字符串进行编码转换,可以使用String的getBytes和构造函数来指定字符集。在与数据库交互时,需要确保数据库连接和表的字符集设置正确。可以在连接字符串中指定字符集。

红目香薰 2718

Neo4j桌面版导入CVS文件

我们的relation.csv是这样的。

m0_53573725的博客 818

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程

Termux 安装kali

风云小虾米的博客 6万+

java读取schemas_Java读取文件中含有中文的解决办法 (转)

Java读取文件中含有中文的解决办法 (转)[@more@]Java读取文件中含有中文的解决办法折磨了一天的问题,终于在黄昏的时候解决了,现在一吐为快。众所周知,java的中文问题一直是一个老大难的问题,这个现象可以在csdn中java论坛里关于中文乱码的提问率就可以了解到,甚至软件巨人IBM专门开辟了一个解决中文问题的专区,作为一个俗人(一直梦想希望想金凯利那样成为一个“冒牌天神”,只是一直没有...

weixin_36310141的博客 169

手把手教你学 MATLAB 实战训练(6.9):卷积神经网络(CNN)模型来进行图像分类任务(预训练的 ResNet-50 模型)

加载数据集数据预处理加载预训练模型修改和扩展预训练模型设置训练选项训练模型测试模型。

xiaoheshang_123的博客 646

Java读取文件中含有中文的解决办法 (转)

Java读取文件中含有中文的解决办法 (转)[@more@] Java读取文件中含有中文的解决办法 折磨了一天的问题,终于在黄昏的时候解决了,现在一吐为快。 众所周知,java的中文问题一直是一个老大难的问题,这个...

ciya3282的博客 117

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 利用Ant实现项目自动构建测试备份并发布到项目web(4)
下一篇: 程序人生(一)
beyondii
博客等级 码龄26年 2粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值