面试被问到如何用Java解决字节流乱码问题?看完这篇教你“从容应敌”!

Javaweb 响应字节流输出中文乱码问题 文章目录问题:使用字节流输出,产生了中文乱码?举个栗子原因:存和取用的不是同一个码表解决办法:把存和取的码表统一第一种解决办法:第二种解决办法: (不建议使用,因为不好记)第三种解决办法:第四种解决办法:我们推荐使用的办法案例上述四种解决办法的案例:问题解决后案例:正常输出中文 问题:使用字节流输出,产生了中文乱码? 举个栗子 如下面的形式就会输出中文乱码 public class ResponseDemo1 extends HttpServlet { /** * 演示字节流输出的乱码问 阅读详情

在这里插入图片描述

面试问到如何用Java解决字节流乱码问题?看完这篇教你“从容应敌”!

1. 转换流

  • InputStreamReader
  • OutputStreamWriter

2. InputStreamReader 类

转换流java.io.InputStreamReader,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。

构造方法

  • InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。
  • InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。

3. OutputStreamWriter 类

转换流java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。【获取资料】

构造方法

  • OutputStreamWriter(OutputStream in): 创建一个使用默认字符集的字符流。
  • OutputStreamWriter(OutputStream in, String charsetName): 创建一个指定字符集的字符流。

4. 读取文件

使用转换流设置读取编码为UTF-8
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"UTF-8");

package com.se.file;

import java.io.*;

public class Demo06_Fis_乱码 {
    public static void main(String[] args) {
        BufferedReader bfr = null;
        try {加入Java开发交流君样:484138291一起吹水聊天

            InputStreamReader isr = new InputStreamReader(new FileInputStream("F:\\Demo1\\w.txt"), "UTF-8");
            bfr = new BufferedReader(isr);
            String str = "";
            while ((str = bfr.readLine()) != null) {
                System.out.println(str);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bfr != null)
                    bfr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

5. 写入文件

使用转换流设置读取编码为UTF-8

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(“F:\Demo1\a.txt”), “UTF-8”);

package com.se.file;

import java.io.*;

public class Demo06_Fis_乱码 {
    public static void main(String[] args) {
        BufferedWriter bfw = null;
        try {加入Java开发交流君样:484138291一起吹水聊天

            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("F:\\Demo1\\a.txt"), "UTF-8");
            bfw = new BufferedWriter(osw);
            bfw.write("你好");
            bfw.write("\r\n");
            bfw.write("abc");
            bfw.write("\r\n");
            bfw.flush();
            bfw.write("哈哈哈");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bfw != null)
                    bfw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

分类: [java]

最新2021整理收集的很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解等。【获取资料】

在这里插入图片描述

深入浅出:.sh文件在Linux系统中的实战应用与技巧 本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。 阅读详情

相关推荐

企业和个人 AI 编程工具怎么选?2025 年 12 款主流工具(Claude/Cursor 等)核心能力 + 收费对比

2025 年最火的 12 款 AI 编程工具,像 Claude、Cursor 这些热门款,我把它们的核心能力、收费标准全扒得明明白白,看完这篇你不用再瞎琢磨,直接就能挑到对的!再说说 Cursor,美国 Cursor Labs 做的,还拿过红杉资本投资,2022 年推出后,2024 年收入直接涨了 6400%,势头很猛。总之,不管你是企业技术管理者、程序员,还是刚入门的 AI 小白,按自己的需求(语言、合规、预算)挑,保准能找到最适合的 AI 编程工具!最后给大家划重点,不同需求直接对号入座:?

hundred98的博客 2804

字符集、IO流(超详细)

字符集基础知识: IO流 二. IO流概述 3.2 字节输出流:每次读取一个字节数组 3.3 字节输入流:读取文件的全部字节 3.4 字节输出流:写字节数据到文件 3.6 文件拷贝

weixin_53622554的博客 384

从零拆解快手Web端__NS_hxfalcon:JS逆向签名参数定位与复现

在JS逆向与前端反爬攻防中,签名参数总是绕不开的核心环节。无论是接口加密还是请求签名,其本质都是通过在客户端收集环境信息、时间戳与业务参数,经特定算法计算后生成用于服务端校验的动态令牌。理解这类参数的生成原理,不仅能提升逆向分析效率,也能帮助前端开发者更好地设计自身接口防护方案。在实际工程中,面对经Webpack打包且高度混淆的代码,直接全局搜索参数名往往难以奏效,需要结合请求抓包、调用栈跟踪、环境适配等方法逐步定位。此类签名参数广泛存在于现代Web应用的GraphQL或REST接口中,是接口数据安全的重要

weixin_29474431的博客 338

IO字节流读取文本中文乱码

关于字节流读取文本数据时中文乱码的情况

weixin_44720982的博客 2067

【rt-thread实战解析】从零到一:基于STM32与LAN8720A的以太网驱动配置全流程

本文详细解析了在RT-Thread操作系统上为STM32F407配置LAN8720A以太网驱动的全流程。从硬件连接自查、CubeMX工程创建、PHY复位函数编写,到RT-Thread工程配置、LwIP协议栈集成,最后进行实际上电测试与网络调试,手把手指导开发者避开常见陷阱,实现稳定的以太网连接。

m2n3b4v5c6的博客 528

立创开源Link Hub多功能USB扩展坞:CH339F主控+4层板设计,实测网口/存储性能

本文深度评测了立创开源Link Hub多功能USB扩展坞,其采用CH339F主控芯片与4层PCB板设计,并严格进行阻抗匹配。实测表明,该扩展坞的USB接口与microSD读卡器性能均接近USB 2.0理论极限,百兆以太网口转换效率高,性能损失极小。设计上注重电源保护与信号完整性,是一个兼顾稳定性与成本的高完成度开源硬件项目。

weixin_36173034的博客 162

字节流乱码,字符流乱码问题

字节流乱码问题 如果用response.getOutputStream.write("中国".getBytes("utf-8")); 写入流(把‘中国’以utf-8的格式存入response容器),浏览器上会展示乱码。 原因:浏览器默认使用码表gb2312来展示数据,因此会出现乱码。 解决方法:可以通过设置Content-type来指定码表: response.setHeader("Content-type", "text/html;charset=utf-8"); 字符流乱码问...

caifei331的博客 616

父子Agent架构:解决AI系统上下文污染的技术方案

在AI系统设计中,上下文管理是核心挑战之一。传统单Agent架构在处理复杂任务时,常面临上下文无限膨胀导致的信息淹没和性能下降问题。父子Agent架构通过职责分离和上下文隔离机制,采用分而治之的思想,将大任务拆解为多个子任务由专门子Agent处理。该架构中父Agent负责任务规划和结果汇总,子Agent执行具体任务后立即销毁中间状态,通过精炼摘要进行通信。这种设计不仅能有效控制上下文长度,还能提升系统稳定性和执行效率,特别适用于编程辅助、自动化测试等需要多步骤处理的场景。父子Agent架构体现了计算机科学中

weixin_42531710的博客 353

字节流读取文本可能产生乱码的原因

本帅气博主 由于使用"IO"字节流的时候,发现有时候读取文本(包含中文),输出到控制台,有乱码的存在,所以通过如下代码演示了一下 一、字节流每次读取一个字节,出现乱码的原因 package inputstream; import java.io.FileInputStream; import java.io.IOException; //字节流每次读取一个字节,出现乱码的原因 publ...

qq_38777614的博客 4916

JLINK/SWD/STLINK下载选项区别

摘要: 本文对比了JLINK/SWD/STLINK的6种下载模式:Normal(硬件复位)、Hot plug(无复位)、Under reset(持续复位后连接)、Software reset(软件复位)、Hardware reset(全复位)和Core reset(内核复位)。重点分析了各模式的操作逻辑、适用场景及注意事项,其中Under reset模式是解决SWD禁用/程序异常的首选方案。通过对比表归纳了复位范围、NRST操作等核心差异,并给出场景选择建议:排查连接问题优先选Under reset,常规调

亚洲程序员盟主得博客 397

基于STM32LXXX的模数转换芯片ADC(TLA2528IRTER)驱动C程序设计

define TLA2528_ADDR 0x12 << 1 // 用于HAL传输的8位地址(写入为0x24,读取为0x25)// 100kHz (示例值,需根据实际时钟计算)#define TLA2528_REG_PIN_CFG 0x00 // 引脚配置寄存器。#define TLA2528_REG_CHN_SEL 0x01 // 通道选择寄存器。

myron6688的博客 230

使用字节流读取文本文件时,乱码问题的产生与解决

问题:使用字节流读取文本文件时,会将一个汉字劈成两半,一次只能读一半出来,产生了乱码,无法使用。就算是一次读取2个字节出来,也依然不能解决问题。如何解决乱码问题,读出完整的汉字和中英文混杂的整篇文章呢?   char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。所有字符均以2个字节存储。这个方法使用一个byte的数组作为...

Golden_soft的专栏 7127

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 270

Java中的字符流

字符流写完要输出刷新 不然文本上不会有显示 close()是先刷新再关闭 所有close()有刷新的功能。void write(char[] cbuf,int off,int len)写入一个字符数组的一部分。void (String str,int off,int len)写入一个字符串的一部分。String s1 = new String("你好");因为将字符串转换成字节数组的时候用的是UTF-8一个汉字三个字节。而将字节数组转换为字符的时候我们用的是GBK两个字节 一个汉字。

愿你历尽千帆,归来仍是少年。 1767

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何避免字节流读取文本乱码

一、问题的发生 当我们尝试用字节流处理读取文档时候 public static void main(String[] args) throws IOException { FileInputStream fis=null; try { // File file = new File("d:/hello/1.png"); File file = new File("d:/hello/demo.txt");

Stronger的博客 2216

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java 字节流乱码_java用字节流读取中文乱码怎么解决?

首先,如果你明确的知道使用的编码,那么你可以在读取完毕生成字符串的时候直接指定编码。例如:FileInputStream in = new FileInputStream("aaa.txt");byte[] data = new byte[1024 * 4];StringBuilder sb = new StringBuilder();while(in.read(data) > 0) {sb...

weixin_32586767的博客 3333

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java编码问题汇总

工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总。 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可以分为两类:按字节读取和按字符读取。按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组中,最后经常用new String...

weixin_34279579的博客 396

字符流和字节流出现乱码问题

JavaWeb网页出现乱码问题 在处理字符流和字节流输出中文乱码时,都采用response.setContentType(“test/hxml;charset=utf-8”);

weixin_45981263的博客 304

转换流解决中文乱码问题

中文乱码问题 上一张讲字节流,通过字节流可以读写任意的文件,但是当使用字节流读写中文时,会存在乱码问题。 我们通过一个案例来演示,在C:\io\a.txt文件中有如下内容 使用字节流读取C:\io\a.txt,一次读取2个字节,并转换为字符串。 public class IsrDemo1{ public static void main(String[] args){ FileInputStream fis=new FileInputStream("C:\\io\\a.txt");

YunWQ的博客 2209

java 字节流乱码_使用字节流读取文件乱码问题

写出中文向txt文件中写出中文,通过下面代码的演示,因为一个中文占2个字节,所以按照字节写出中文时会出现乱码的情况。package com.monkey1024.stream;import java.io.BufferedOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import ...

weixin_35824806的博客 1838

Java读取、写入文件如何解决乱码问题

读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题。首先,明确一点,文本文件与二进制文件的概念与差异。 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码、ANSI编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。) 因此可以看出文本文件

mrdu_somefun的博客 4551

Java字节流读取汉字乱码

关于Java字节流读取汉字乱码探究 问题概述 当我们尝试使用字节流对汉字进行写入读取操作时,可能出现乱码。其根本原因在于编码标准不同。汉字采用gbk,而idea使用UTF-8。在这样的前提下,开始讨论本文题。 使用FileInputStream进行读取汉字 首先在预先准备好 a.txt 文档,内部存储汉字,如图 可以看到其编码格式是ANSI,在中文windows上即为GBK编码。...

a15093142309的博客 5817

java写入txt文件(java写入txt文件乱码)

怎么把txt文档存成扩展名是java的文件阿~~~ 新建个TXT文档,在里面输入你所需要的内容之后,再 文件 另存为 选择所有文件 输入你要保存的文件名 扩展名当然不要忘掉 是JAVA的 Java程序如何向Logger日志文件中写入字符串? log4j设置输出级别 info logger.info("...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 570

java写入文件中文_java 写入txt文件的中文乱码問題

读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。BufferedReader bre = null;try {String file = "D:/test/test.txt";bre = ne...

weixin_39881513的博客 870

使用字节流读取文本文件时出现乱码问题的分析 [Java]

关于用字节输入流读取文本文件时出现乱码的问题分析 这个时候我们通过一个例子来进行说明: package IO流.fileinputstream; import java.io.FileInputStream; import java.io.File; import java.io.IOException; public class Demo2 { public static void main(String[] args) throws IOException{ /*

m0_57001006的博客 1777

JAVA字节流读取文本及出现乱码原因

一.字节流 单个字节读取 public static void main(String[] args) { try { FileInputStream in = new FileInputStream("D:\\bf\\Desktop\\test.txt");//字节流 int data = in.read(); while(data != -1){ System...

qq_38227085的博客 2706
上一篇: 一篇关于Java string超详细解说!坚持看到最后你一定会有收获!
下一篇: 入门Java不迷路!一篇教你搞懂Java 【File类】的概述和方法!
Danny_java
博客等级 码龄5年 9粉丝 64原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值