原因:文件保存的编码和编码程序(如Eclipse或IDEA)里面项目的的编码集不一样,所以乱码,将文件和项目的编码集改为一样的,就可以了
@Test
public void test4() throws UnsupportedEncodingException{
//我项目的编码集是UTF-8
String s = “我爱中国”;
System.out.println(s);//我爱中国
byte[] bytes = s.getBytes(“GBK”);
System.out.println(Arrays.toString(bytes));//[-50, -46, -80, -82, -42, -48, -71, -6]
System.out.println(bytes);//[B@14514713
//在这里的bytes这个位置只能是变量,不是的话会报错
String s1 = new String(bytes,“GBK”);
System.out.println(s1);//我爱中国
String s2 = new String(bytes,“UTF-8”);
System.out.println(s2);//???й?
}

  • 测试代码
 @Testpublic void test2() throws Exception{//创建实例化FileReader对象FileReader fr = new FileReader("E:\\testNomal\\FileTest\\三国演义3.txt");int i = 0;String mess = "";while((i=fr.read()) != -1){mess += (char)i;//如果没有char的话,输出的是一长串数字//6553365533655331016655336553349765533655336553365533108165533655336553365533140165533655331780655336553365533185565533881655336553365533655336553365533655336553365533655336553342356553365533}System.out.println(mess);//仍然乱码:���ϸ��DZ����й����չ��۴���ܿ�ͱ�����������*#��//原因:文件保存的编码和现在Eclipse里面的编码集不一样,所以乱码,将文件和项目的编码集改为一样的fr.close();}

当然也可以使用下面方法解决编码问题

解决编码问题

字符串
  • 相关方法
方法名 说明
byte[] getBytes() 使用平台的默认字符集将该 String编码为一系列字节
byte[] getBytes(String charsetName) 使用指定的字符集将该 String编码为一系列字节
String(byte[] bytes) 使用平台的默认字符集解码指定的字节数组来创建字符串
String(byte[] bytes, String charsetName) 通过指定的字符集解码指定的字节数组来创建字符串
 @Testpublic void test4() throws UnsupportedEncodingException{//我项目的编码集是UTF-8String s = "我爱中国";System.out.println(s);//我爱中国byte[] bytes = s.getBytes("GBK");System.out.println(Arrays.toString(bytes));//[-50, -46, -80, -82, -42, -48, -71, -6]System.out.println(bytes);//[B@14514713//在这里的bytes这个位置只能是变量,不是的话会报错String s1 = new String(bytes,"GBK");System.out.println(s1);//我爱中国String s2 = new String(bytes,"UTF-8");System.out.println(s2);//????й?}
字符流
  • 字符流中和编码解码问题相关的两个类

    • InputStreamReader:是从字节流到字符流的桥梁

      它读取字节,并使用指定的编码将其解码为字符

      它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集

    • OutputStreamWriter:是从字符流到字节流的桥梁

      是从字符流到字节流的桥梁,使用指定的编码将写入的字符编码为字节

      它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集

  • 构造方法

    方法名 说明
    InputStreamReader(InputStream in) 使用默认字符编码创建InputStreamReader对象
    InputStreamReader(InputStream in,String chatset) 使用指定的字符编码创建InputStreamReader对象
    OutputStreamWriter(OutputStream out) 使用默认字符编码创建OutputStreamWriter对象
    OutputStreamWriter(OutputStream out,String charset) 使用指定的字符编码创建OutputStreamWriter对象
@Testpublic void test5() throws Exception{OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:\\testNomal\\FileTest\\FileWriterTestUnic.txt"),"GBK");osw.write("我爱中国");osw.close();InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\testNomal\\FileTest\\FileWriterTestUnic.txt"),"GBK");//一次读取一个字符数据int ch;while ((ch=isr.read())!=-1) {System.out.println((char)ch);}isr.close();}
/*
我
爱
中
国
*/

使用字符流,输出中文仍然乱码原因相关推荐

  1. JavaEE中用response向客户端输出中文数据乱码问题分析

    这篇文章主要介绍了JavaEE中用response向客户端输出中文数据乱码问题分析,需要的朋友可以参考下 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的reques ...

  2. vs2012编程中输出中文出现乱码

    关于"vs2012编程中输出中文出现乱码"问题的探究 问题如下: //代码如下// #include<iostream> using namespace std; in ...

  3. 成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决)

    成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决) 目录 解决问题 解决思路 1.从网络读取图像数据并转换成图片格式 2.将图片 ...

  4. 【50关于Visual Studio 2019控制台输出中文出现乱码问题及解决办法】

    文章目录 关于Visual Studio 2019控制台输出中文出现乱码问题及解决办法 1.从.txt文件中读取输出出现乱码 2.从中文字符串中读取输出出现乱码 关于Visual Studio 201 ...

  5. qt项目中的某一个类的输出中文信息乱码,其它类中文输出正常

    问题描述 qtcreate5.13.2中整个项目中通过添加头文件,使用qDebug()输出中文打印信息,输出中文都是正常的,但是有一个类的输出中文是乱码. 解决方法 修改该类的编码格式.由于项目默认采 ...

  6. Android studio编译日志输出中文出现乱码 (如apk为中文命名时候)解决

    Android studio编译日志输出中文出现乱码 (如apk为中文命名时候)解决 遇到乱码问题导致编译后 apk安装文件出错等 使用如下方法解决: 没有则点击**"create" ...

  7. fileReader字符流读取中文乱码的解决办法

    在使用字符流读取文件中的数据时,中文会因为编码的原因出现乱码: windows系统默认编码可以在DOS中查看,936中国 - 简体中文(GB2312): idea的默认编码为utf-8: 所以在使用f ...

  8. Java基础学习之用System.out.println()输出中文字符串乱码问题

    问题描述: 在学习"java基本数据类型"相关知识点过程中,使用不同文本编辑器编写java源代码文件在cmd控制台中编译和运行过程中多次出现乱码情况. 电脑操作系统:win10 企 ...

  9. Qt下C++的cout输出中文信息乱码问题解决

    在Qt中使用C++的cout时,发现打印出的中文时乱码的,如下: 解决办法: 第一步: 加入头文件 == #include <windows.h> == //解决cout中文输出乱码第一步 ...

最新文章

  1. 【转】基本概念:过拟合、修剪、假正、假负
  2. Neo4j实战 (数据库技术丛书)pdf
  3. Elasticsearch java api(五) Bulk批量索引
  4. Linux命令——chmod
  5. c语言之函数存储属性,C语言:链接属性与存储类型
  6. oracle监听启动命令6,[转] oracle 监听
  7. JAVA面试题 + 答案
  8. 货物被偷把沃尔玛逼急了 将在逾1000家门店安装AI相机
  9. (转)如何学习盈透api的开发?
  10. 【Python】P2525 Uim的情人节礼物·其之壱
  11. 5.2 imnoise函数
  12. 李迅雷:大城市化和居民加杠杆能支撑房价多久
  13. 夏普Android系统,夏普LCD-60\70TX85A及YunOS安卓运行环境安装指南
  14. 关于Protel 2004 绘制电路原理图——元件库的建立
  15. 构建Lua解释器Part8:构建完整的语法分析器(下)
  16. 一缕黑暗中的火光-----------用例图--------------优雅的建模语
  17. Scratch软件编程等级考试一级——20211211
  18. 基于javaweb(springboot+mybatis)网上家具商城项目设计和实现以及文档报告
  19. 「网络流 24 题」孤岛营救问题
  20. 计算机图形学四:抗锯齿SSAA及MSAA算法和遮挡剔除Z-Buffer算法

热门文章

  1. 企业引导页自适应HTML源码
  2. 单片机洗衣机控制系统电路理解
  3. 英特尔酷睿11代CPU(TigerLake)在Nvme m.2 ssd下安装系统无法识别硬盘的解决方法
  4. OBS Stduio 捕获屏幕预览黑屏 win10解决方案
  5. 实现VMware Horizo​​n+负载均衡(AVI)(一)
  6. HTML+CSS制作七夕情人节求婚动画(520情人节程序员表白)
  7. Xenu-web开发死链接检測工具应用
  8. 计算机里创建本地磁盘分区,韩博士教你怎么用本地模式将电脑磁盘分区
  9. 蚂蚁金服原副总裁漆远加盟复旦大学,任人工智能院长
  10. 在C语言中如何取一个数的小数部分?