1 字节流以及编码转换说明

String str = "中";

byte[] b_gbk =str.getBytes("GBK");

byte[] b_utf8 =str.getBytes("UTF-8");

String s_gbk = newString(b_gbk,"GBK");

String s_utf8 = newString(b_utf8,"UTF-8");

System.out.println(s_gbk);

System.out.println(s_utf8);

环境:Windows系统Eclipse,源码格式是GBK,为什么写明环境,主要还是跟系统显示有关

1.1详细剖析

第一行代码其实暗含:str是一个GBK编码的字符串,里面的byte数组存储的编码字符串是GBK编码的。

第二行代码getBytes是什么意思呢?就是告诉系统,你把str里面的字符串内容,转换成GBK编码然后存储到b_gbk,这就会涉及到GBK编码转换成UTF-8编码,如果理解不了,可以这样子想:中字在GBK里面的编码是这样子这样子,你看看中字在UTF-8的编码是什么,告诉我。

第四行代码后面有指定编码格式,就是告诉系统,我这个String类型存储的是GBK编码的字符串,系统在显示该字符串的时候,知道其编码格式,采用GBK来解码显示。

问题1:

java读取utf-8编码文件,出现中文乱码,最大可能的原因是什么?读取GBK编码文件,是正常的!

上面已经提到过String变量是有编码的格式要求的,默认情况下,读取文件的时候会根据系统的默认编码来读取,这种情况下,肯定就是乱码了,因为读取进去的就是,赋值给String就是GBK编码。

问题2:

utf-8带BOM的文件会出现?这个符号,这是什么情况?

原来BOM在文件中也是一种字符存在,因为没有对应的编码输出,所以只能够显示这种符号了。所以在应用中不要选择这种编码方式就可以了。

2 UTF-8或者GBK文本的读取

有了上面的基础,就可以读取文本了。构建一个UTF-8的中文文档

public static void method()

{

try {

File  file = new File("d:fengyuzaitu.txt");

byte buffer[] = newbyte[20];

FileInputStreamf ileinput = new FileInputStream(file);

fileinput.read(buffer);

Strings = new String(buffer, "UTF-8");

System.out.println(s);

fileinput.close();

}catch(IOException e) {

e.printStackTrace();

}

}

public static void method1()

{

try {

FileInputStream fileinput = new FileInputStream("d:fengyuzaitu.txt");

InputStreamReader isr = new InputStreamReader(fileinput, "UTF-8");

BufferedReader br = new BufferedReader(isr);

Stringtest = "";

test = br.readLine();

System.out.println(test);

br.close();

}catch(IOException e) {

e.printStackTrace();

}

}

这里进行详细描述:

方法1:直接读取字节流,然后指定String的编码类型,也就是字节流当前的编码类型

方法2:指定读取文本采用的编码格式,返回的String实际上就是经过第一种方法的包装之后返回的。

温馨提示:读取sqlite数据库的时候,如果将GBK字节流存储进去,读取出来的时候采用getBytes,读取字节流,然后按照上面的方法进行转换。

     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1581528,如需转载请自行联系原作者

Java文件读取 中文乱码相关推荐

  1. java 文件读取中文乱码_java文件读取时发生中文乱码怎么解决

    java文件读取时发生中文乱码怎么解决 发布时间:2020-06-23 09:33:47 来源:亿速云 阅读:59 作者:Leah java文件读取时发生中文乱码怎么解决?这篇文章运用了实例代码展示, ...

  2. 火爆全网MySQL路线笔记!java文件读取中文乱码

    正文 模块(Module).组件(Component).包(Package),这些概念对于我们技术同学并不陌生,但并不是所有人都能理解其要义. 深入理解之后,我才发现,其背后的深意是分类思维.而这种分 ...

  3. win10完美解决cmd运行java文件出现中文乱码问题

    在看反射课程研究编译静态加载类动态加载类的时候需要用命令行运行记事本写的java文件,出现中文乱码,如图 解决办法: 在命令行运行chcp 936

  4. java文件读取德语乱码

    今天在文件读取西欧国家的语言时,发现乱码,于是搜索了下,发现是编码格式的问题: 从维基百科中找到德语的乱码问题,上面这样说道: 乱码问题 由于德语的计算机编码为西欧语言,国际标准为ISO-8859-1 ...

  5. 解决生成的saiku文件读取中文乱码的问题

    javax.ws.rs.WebApplicationException: org.saiku.service.util.exception.SaikuServiceException: org.sai ...

  6. Beyond Compare解决java文件对比中文乱码问题

    步骤: 1.打开菜单:工具 -> 文件格式,打开"文件格式"对话框. 2.左边列表中选中"Java源代码", 3.右边"转换"选项卡中 ...

  7. php utf-8读取,PHP读取文件,解决中文乱码UTF-8的方法分析

    PHP读取文件,解决中文乱码UTF-8的方法分析,方法,中文,操作技巧,文本,本文 PHP读取文件,解决中文乱码UTF-8的方法分析 易采站长站,站长之家为您整理了PHP读取文件,解决中文乱码UTF- ...

  8. 读取properties文件,中文乱码

    读取properties文件,中文乱码 在线编码转换Native/ASCII      http://tool.oschina.net/encode?type=3

  9. spring使用@Value标签读取*.properties文件的中文乱码问题的解决

    spring使用@Value标签读取*.properties文件的中文乱码问题的解决 参考文章: (1)spring使用@Value标签读取*.properties文件的中文乱码问题的解决 (2)ht ...

最新文章

  1. 2022-2028年中国草炭土行业市场研究及前瞻分析报告
  2. CaaS环境下实践经验总结(二):监控系统部署
  3. 【机器学习入门笔记7:TensorFlow常量变量的定义】20190210
  4. 时序图如何表现分支_静态时序分析圣经翻译计划——第五章:延迟计算 (上)...
  5. python image模块需要安装吗_python Image模块安装
  6. android学习笔记---61_Widgets,窗口小部件的制作...
  7. Unable to compile class for JSP 的可能原因
  8. C++调用.lib的方法
  9. PPT双屏抽奖,大气,能Hold住全场!与其它PPT内容可融为一体,实现无缝切换!
  10. fdfs-文件上传信息返回详情
  11. Python中使用多个分隔符分隔字符串re.split
  12. 1-14 Burpsuite Repeater介绍
  13. 不插电的计算机科学什么意思,请用“不插电的计算机科学”的思想方法,将二进制数(01110100)2快速.._简答题试题答案...
  14. JDK的解压安装 - CentOS(结尾附视频)
  15. 最详细的java调用含参数的python程序并且返回值
  16. 阿里首推 Java 技术成长笔记,业内评级“钻石级”,还不来看?
  17. 如何使用高程DEM建立三维地图模型(Arcgis ArcScene)
  18. 快递鸟android_YII2 使用快递鸟api跟踪物流查询(示例代码)
  19. 正大国际期货:外盘恒指期货交易规则
  20. 抗生素五大类代表药物

热门文章

  1. android ConcurrentHashMap的使用
  2. MVC简捷调用EasyUI的datagrid
  3. Mysql主从复制详解和实战
  4. OpenCV3.0或OpenCV3.1的SVM操作
  5. 在终端显示文本的中间部分
  6. MYSQLl数据库 表的操作
  7. 通过Redis、Memcache的 incr 原子操作防刷机制的使用差别
  8. react-native scrollview触摸滚动事件
  9. Hibernate关于父类子类的映射
  10. 通讯录的初步了解与使用