编码转换流

news2025/1/22 19:07:18

同理,创建f1和f2方法,分别测试OutputStreamWriterInputStreamReader

 也是主要分三步,即1创建流   2使用流   3关流

OutputStreamWriter   f1方法

因为要操作流,所以先创建一个try-catch-finally结构,创建流对象OutputStreamWriter,传参使用FileOutputStream,依然传地址,使用write方法往文件中写入一串字符,去磁盘检查文件即可验证

 

 在记事本中读取的时候,这里可能会出现乱码,就要看看idea的编码和记事本是不是一样的,都在右下角

 所以说,这里idea是可以在程序中指定编码的,从而达到编码转换的效果

回到创建FileOutputStream的地方:可以看到FileOutputStream是有好几种重载的构造方法的,后面第二个参数就是指定字符集

可以写入 "gbk" , "iso-8859-1"等 

保持写入时的编码和记事本的编码一致,即可在程序写进记事本后,去打开记事本正常查看

InputStreamReader   f2方法

这里如果不用记事本,程序写完后,继续使用程序来读取也是可以的

 同样因为要操作流,所以先创建一个try-catch-finally结构,创建流对象InputStreamReader,传参使用FileInputStream,依然传上面这个地址,使用read方法从文件中读取出这一串字符

这里发现读取出来的并不是预想之中的字符,而是一串数字

并且在换了几种字符集后,发现不同的编码表  打印出来的数字也不一样的

如果读取的是utf-8 和idea默认读取的编码是同一种,那么读取到的数字就和写入的一样

实际上我们并不是想看这个编码,是想看中文字符内容,下面来完善

1、先动态创建一个长度足够的char数组

2、然后调read方法,将字符数据读到这个数组里面去,返回是数据的长度,不过此时是read的重载的传数组的方法,直接传数组

3、最后调String重载的构造方法,将char数组封装成String

这里传起始下标和数据的长度是因为要读到了几个长度,就封装几个长度,不然会字符串输出完后后面全是空格 

注意传的长度是上面接收read方法返回的数据长度,而不是char数组的长度chars.length !

代码: 

到这里还需要补充一点,,回去仔细看控制台输出,会发现字符串的第一个字符没有了,

换了其他字符串写入也是丢失首字符

 这是因为在前面还调用read方法读取了一下,而read方法的特性是按顺序读取,且只能读取一次,其实前面已经把第一个字符读了,打印出一个编码数字到控制台,再继续读取后面剩下的字符,就引起了这个问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2596. 检查骑士巡视方案】

来源:力扣(LeetCode) 描述: 骑士在一张 n x n 的棋盘上巡视。在有效的巡视方案中,骑士会从棋盘的 左上角 出发,并且访问棋盘上的每个格子 恰好一次 。 给你一个 n x n 的整数矩阵 grid ,由范…

无涯教程-JavaScript - ISERR函数

描述 如果ISERR函数引用的是Excel错误(#N/A错误除外),则ISERR函数返回逻辑值TRUE。否则返回FALSE。 语法 ISERR (value)争论 Argument描述Required/OptionalvalueAn errorRequired Notes 此函数在公式中用于测试计算输出很有用。与IF函数结合使用时,此函数提供…

综合能力 ---- 2. 法律法规

1. 法律法规 1.1 电信条例 电信条例概述电信市场规定电信服务规定电信建设规定电信安全规定 1.2 网间互联管理规定 网间互联概述经营者的互联义务互联时限 1.3 网络安全法 网络安全法概述网络运行安全规定网络信息安全规定 2. 电信条例修订的目的 《电信条例》于2016年做…

fatal error: linux/compiler-gcc9.h: No such file or directory

linux 找到README文件 cd /mnt/e/CLionProjects/linux-3.10.99/linux-3.10.99 sudo useradd linux3x sudo passwd linux3x sudo mkdir /home/linux3x sudo chown linux3x:linu3x /home/linux3x sudo chmod 755 /home/linux3x su - linux3x mkdir ~/build mkdir ~/build/kerne…

精品基于NET实现的民族文化宣传网站

《[含文档PPT源码等]精品基于NET实现的民族文化宣传网站》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数…

python 语法入门

文章目录 前言python 语法入门1. 语句分隔符2. 注释3. pep8规范4. 变量5. 扩展5.1. 运行此行代码的过程 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会…

分享一下在微信小程序上怎么实现投票功能

微信小程序已经成为一种非常受欢迎的移动应用,可以通过它来实现各种功能,包括投票功能。下面,我们将为大家详细介绍如何在微信小程序上实现投票功能。 一、确定投票功能的目标 在策划投票功能之前,需要明确自己的目标。目标可以是…

【python】CliffWalking悬崖寻路问题

强化学习 简介gym库-CliffWalkingSARSAQ-learning 示例SARSAQ-learning 简介 机器学习:监督学习、非监督学习、强化学习 模仿人类和动物的试错机制进行学习智能体与环境交互,根据当前的环境状态s,按照一定策略采取行动a,获得回报r…

使用 CSS 伪类的attr() 展示 tooltip

效果图: 使用场景: 使用React渲染后台返回的数据, 遍历以列表的形式展示, 可能简要字段内容需要鼠标放上去才显示的 可以借助DOM的自定义属性和CSS伪类的attr来实现 所有代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-…

Linux之文本搜索工具--grep

目录 Linux之文本搜索工具--grep 作用 格式 参数 注意 示例 操作对象文件&#xff1a;/etc/passwd grep过滤命令示例 Linux之文本搜索工具--grep 作用 grep是linux中一种强大的文件搜索过滤工具&#xff0c;可以按照正则表达式检索文件内容&#xff0c;并把匹配的结果显…

Ubuntu安装与配置MySQL简要记录

目标 前置条件&#xff1a;Virtualbox虚拟机下Ubuntu20.04 目标MySQL版本&#xff1a;8.0.34 目标效果&#xff1a;安装并配置MySQL&#xff0c;开启远程连接且使用windows下的DataGrip进行管理 安装 sudo apt install mysql-server 通过apt安装的mysql只需一行&#xff0c;…

LeetCode——动态规划篇(一)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&a…

【C++】泛型编程 | 函数模板 | 类模板

一、泛型编程 泛型编程是啥&#xff1f; 编写一种一般化的、可通用的算法出来&#xff0c;是代码复用的一种手段。 类似写一个模板出来&#xff0c;不同的情况&#xff0c;我们都可以往这个模板上去套。 举个例子&#xff1a; void Swap(int& a, int& b) {int tmp …

智能驾驶感知技术的综述与展望

目录 1 智能驾驶环境感知的目的 1.1 智能驾驶感知技术的定义和作用 1.2 基于传感器的智能驾驶感知技术 1.3 基于深度学习的智能驾驶感知技术 2 环境感知的手段与方法 2.1 感知技术在智能驾驶中的应用与发展 2.2 智能驾驶决策系统的设计与优化 2.3 控制技术在智能驾驶中的应…

SpringMVC之JSON返回异常处理机制

json处理统一异常处理 1.json处理 //pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

加快项目开发进度常用5种方法

项目进度管理是根据进度目标&#xff0c;制定合理的进度计划&#xff0c;全程监控项目进度的执行情况。这样有利于明确项目目标&#xff0c;协调团队行动&#xff0c;提高开发效率&#xff0c;从而最大化项目利益。而加快项目进度&#xff0c;有利于提高项目整体效率&#xff0…

我的创作纪念日——1个普通网安人的漫谈

机缘 大家好&#xff0c;我是zangcc。今天突然收到了一条私信&#xff0c;才发现来csdn已经1024天了&#xff0c;不知不觉都搞安全渗透2年半多了&#x1f414;&#xff0c;真是光阴似箭。 我写博客的初衷只是记录自己的学习历程&#xff0c;比如打打靶场&#xff0c;写一下通关…

高成本获客时代,企业如何通过营销自动化实现突围?

在数字化时代&#xff0c;随着市场竞争的不断升级&#xff0c;企业在获客方面面临了前所未有的挑战。不论是B端或C端的市场和运营部门纷纷寻求可降低获客成本的新运营路径&#xff0c;将有限的预算花在刀刃上。 企业迫切需要寻求更加智能和高效的方式来吸引、转化和留住潜在客…

QGC 参数设置中关于param_union的使用

在QGC中在设置飞控参数中使用到了union,此处关于param_uinon使用的理解进行记录。 参数上传 在参数上传中根据参数类型将参数存储在param_union对应的类型中&#xff0c;但是上传参数时&#xff0c;上传的是param_float类型&#xff0c;所以在飞控端接收时&#xff0c;需要使…

JSON与实体类之间的互相转换!!

一、意义 在我们调用三方平台接口时&#xff0c;经常需要将我们封装的实体类转换为json作为传参&#xff0c;或者是当我们接收报文时接收的为json数据想要转换为我们自己封装的实体类。 1实体类转JSON public static void main(String[] args) throws JsonProcessingExceptio…