java 输出编码_从代码看java输入输出中的编码和解码

2023-11-16

在java中,采用Unicode编码,英文字符和汉字都占两个字节,下面的代码都是在中文操作系统上执行的,系统采用GBK编码。

1.看一下下面这段代码的编码和解码:当我们在键盘上敲入字符的时候,其采用的是GBK编码,比如我们敲入'b',它占两个字节。read()每次读取一个字节,返回一个int数据,该int数据,int的构成是最低位字节是read读取的字节,其余24位补0,'b'就回了两个int数据。write(data),每次向输出流中写入一个字节,写入的字节是data的最低位字节,这样写入的字节就和输入'b'编码后的字节一致。然后系统在按照GBK进行解码输出显示'b'。

1 int data;

2 while((data=System.in.read())!=-1)

3 {

4 System.out.write(data);

5 }

2.再来看看这段代码的编码和解码:代码读取的文件中的数据存在计算机中,它采用GBK编码。input.read(array)将这些字节读入到array数组中。new String(array,0,len)采用的是系统默认字符集GBK(中文环境下)进行解码出字符串,字符串在计算机中采用Unicode进行编码存储。系统按照GBK进行解码字符串,并输出显示。

1 FileInputStream inPut = new FileInputStream("D:"+File.separator+"test"+File.separator+"hello.txt");

2 byte[] array = new byte[100];

3 int len = inPut.read(array);

4 System.out.println(new String(array,0,len));

5 inPut.close();

3.getBytes()采用系统默认字符集GBK编码“Hello FileOutputStreamaaa”,outPut.write(“Hello FileOutputStreamaaa”.getBytes())将这些字节写入到输出流中,系统采用GBK解码输出这些字节。

FileOutputStream outPut = new FileOutputStream("D:"+File.separator+"test"+File.separator+"hello.txt");

outPut.write("Hello FileOutputStreamaaa".getBytes());

outPut.close();

4.dos.writeByte(b)以一个字节的长度,向输出流中写入b,,dos.writeBoolean(a)以一个字节的长度,向输出流中写入a,而我们的本地系统采用GBK进行编码,所以会出现乱码,dos.writeInt(c)以四个字节的长度,向输出流中写入c,dos.writeChar(d)以两个字节的长度,向输出流中写入d。而我们当我们打开被写入的文件时,它是按照GBK进行解码(双字节)就会出现乱码。

FileOutputStream outPut = new FileOutputStream("D:"+File.separator+"test"+File.separator+"hello.txt");

BufferedOutputStream buffOutput = new BufferedOutputStream(outPut);

DataOutputStream dos = new DataOutputStream(buffOutput);

byte b = 1;

boolean a = false;

int c = 12;

char d = 'd';

dos.writeByte(b);

dos.writeBoolean(a);

dos.writeInt(c);

dos.writeChar(d);

dos.close();

5.这是一个字符流,我们指定了outWrite采用ASCII进行编码。"Hello博客园"采用Unicode编码存储在计算机中,writer.write()每次向输出流中写入两个字节(一个字符),"Hello"每个字符从Unicode向ASCII转换,保留低位,仍能正确表示原来字符。而"博客园"每个汉字从Unicode向ASCII转换的时候,则被丢弃一位,不能正确表示,当我们打开被写入的记事本文件的时候,按照GBK进行解码显示输出。

FileOutputStream outStream = new FileOutputStream("D:"+File.separator+"test"+File.separator+"hello.txt");

OutputStreamWriter outWriter = new OutputStreamWriter(outStream,"ASCII");

BufferedWriter writer = new BufferedWriter(outWriter);

writer.write("HEllO博客园");

writer.close();

6.在这里我们将平台的默认字符编码集改为"ISO-8859-1",我们在键盘上敲入数据,这些数据按照GBK进行编码(每个字符站两个字节),我们将么这些字节存放到array中。然后String(array,0,index)采用"ISO-8859-1"(单字节)进行解码,就会出现乱码。

Properties pro = System.getProperties();//获取java虚拟机的系统属性pro.setProperty("file.encoding", "ISO-8859-1");

int data,index = 0;

byte[] array = new byte[100];

while((data=System.in.read())!='q')

{

array[index] = (byte)data;

index++;

}

String str = new String(array,0,index);

System.out.println(str);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 输出编码_从代码看java输入输出中的编码和解码 的相关文章

  • 弱口令漏洞与验证码绕过——渗透day04

    目录 一 基于远程服务的弱口令攻击 一 服务暴力破解软件 二 实验 二 基于web的弱口令测试 一 基于表单的暴力破解 二 验证码绕过 on client 1 通过Script Blocker Ultimate插件绕过验证码 2 通过bur
  • Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

    看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程 不会的话可以查看本篇博客 总结 QT 多线程 处理密集时的界面响应保持 运用 MultMoveToThread testObject new MultM
  • 记一次mysql进程无法启动的解决方案

    莫名其妙数据库崩了 试了很多方案启动不了 然后不经意看到 usr local mysql data目录下几个日志文件特别大 删除之后就能重启了 rw rw 1 mysql mysql 4497955 Mar 3 18 29 xxxx php
  • 【Unity Optimize】使用图集(Sprite Atlas)优化项目

    目录 1 图集 Sprite Atlas 介绍 2 创建与配置Sprite Atlas 2 1 创建Sprite Atlas 2 1 1 Unity2D项目 2 1 2 Unity3D项目 2 2 配置Sprite Atlas 2 3 注意
  • PLC接线详解

    PLC常见的输入设备有按钮 行程开关 接近开关 转换开关 拨码器 各种传感器等 输出设备有继电器 接触器 电磁阀等 想学好电气 必须先学会接线 如果线都接不好的话 设备出现问题时 依然是无从下手 正确地连接输入和输出线路 是保证PLC可靠工
  • 射频电路学习之LC振荡电路

    文章目录 前言 一 串联谐振电路 二 并联谐振电路 三 谐振电路的本质 总结 前言 谐振是指 当外力作用的频率与系统固有的振荡频率相同或非常接近时 振幅急剧增大的现象 其中产生谐振时的频率成为谐振频率 谐振是正弦电路中的一种特殊现象 回路也
  • IBM DISK queue_depth参数调整

    queue depth参数会影响disk i o性能 特别是在数据库等i o密集性应用中 适当调整设置此参数 会提高整体应用的性能 下面是在AIX 5 3 IBM ds4300上调整此参数的 步骤及注意事项 记录一下 下面物理磁盘hdisk
  • Windows 11 提升软件打开速度

    设置 gt 辅助功能 gt 视觉效果 gt 动画效果 关闭 设置 gt 辅助功能 gt 视觉效果 gt 透明效果 关闭 设置 gt 应用 gt 启动 都关闭
  • 08-wait 和 sleep 的区别

    1 源码 sleep public class Thread implements Runnable public static native void sleep long var0 throws InterruptedException
  • Qt实现图像自适应窗口大小之scaled()函数使用

    很多应用都需要显示图片 比如视频类应用 拍照类应用 但是在大数情况下用户都会改变窗口大小 以获得最佳效果 在Qt中如果只设置了显示图片而没有对自适应窗口做出设置 用户拖拽边框的时候 整个控件上就会出现大片空白部分 怎么解决这个问题呢 QIm
  • Python基础(四):Python函数和模块的讲解和应用

    一 前言 山东省小学已将Python内容纳入教材 江省已将信息技术教材VB编程语言替换为Python 计算机二级考试加入 Python语言程序设计 科目 越来越多的岗位也需要Python技能 Python连续4年成功登顶最流行的编程语言榜单
  • Git安装以及基本配置

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 提示 以下是本篇文章正文内容 下面案例可供参考 一 Git安装以及配置 git官网 https git scm com downloads 选择适合的版本进入下载 然后傻瓜式
  • 两个数组去重!

    var a1 1 2 3 4 5 var b1 1 2 var c1 a1 filter a gt return b1 some c gt c a 两个数组可快速对比去重
  • crontab日志包命令找不到和乱码问题

    crontab设置的定时任务 执行脚本报错命令找不到和乱码 使用crontab时的运行环境已经不是用户环境了 因此原本用户下的一些环境变量的设 置就失效了 因为我的命令path设置到了 etc profile里了 所以在crontab运行不
  • 【Flutter 1-8】Flutter教程Dart语言——控制语句

    控制语句 Dart语言的控制语句跟其他常见语言的控制语句是一样的 基本如下 if 和 else for 循环 while 和 do while 循环 break 和 continue switch 和 case assert If 和 El
  • centos 6.6 编译安装PHP7.0.5

    PHP7 0正式版也出来了 今天编译安装了一下 写下安装步骤 我是在centos6 6 环境中编译的 如下 下载地址http cn2 php net distributions php 7 0 5 tar gz 安装编译所需的包 如遇见部分
  • ListView 的position不正确的时如何处理

    当给ListView加了一个HeaderView后 代码如下 我们发现 onItemClick方法里的position参数的值不是我们所期望的 比如点击ListView的第一行 我们期望的position是0 可是实际上却是1 也就是说 它
  • OAuth2实现单点登录SSO完整教程,其实不难!

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rock
  • vovnet 测试

    vovnet39 1070 640 640 batch 1 15ms 自己改了参数 import time import torch import torch nn as nn import torch nn functional as F

随机推荐

  • Jvm实际运行情况-JVM(十七)

    上篇文章说jmap和jstat的命令 如何查看youngGc和FullGc耗时和次数 Jmap JVM 十六 Jvm实际运行情况 背景 机器配置 2核4G JVM内存大小 2G 系统运行天数 7天 期间发生FULL GC次数和耗时 500多
  • JS数组reduce()方法详解

    reduce 方法接收一个函数作为累加器 数组中的每个值 从左到右 开始缩减 最终计算为一个值 reduce 可以作为一个高阶函数 用于函数的 compose 注意 reduce 对于空数组是不会执行回调函数的 首先我们看一下参数initi
  • 期货开户交易贵在坚持

    期货人生之一 交易贵在坚持 水滴石穿虽然平日看起来不起眼 但随着岁月的流逝 小流也将汇集成复利的海洋 因为只有时间才是真正成就复利可怕的力量 即使一生做的再成功 也并不能说明什么问题 只能说明我坚持了交易的原则 仅此而已 失去原则 我将一文
  • json应用场景与实战

    1 php中的json简介 首先我们说json是一种简便的轻量级的数据交换格式 能够在吴福气之间交换数据 json起源 1 标量 2 序列 3 映射 2 怎样使用json JSON的基本语法 JSON的四个基本规则 1 并列的数据之间用逗号
  • BeanUtils.copyProperties的用法

    BeanUtils copyProperties的用法 BeanUtils copyProperties a b 首先BeanUtils有2个包 org springframework beans BeanUtils 这个包 是a b为对象
  • 基于 spring cloud 的广告系统设计与实现(一)

    1 实现功能 CPM Cost Per Mille 每千人成本 CPT Cost Per Time 每时间段成本 CPC Cost Per Click 每点击成本 2 所包含子系统 3 所用技术 4 扩展 5 广告系统架构 转载于 http
  • 数据分析 之(一) --- 环境搭建

    安装 首先打来终端 安装 ipython 可以在终端 输入 ipython 回车进入 exit 回车退出 1 pip V 2 pip install ipython 其次 安装 jupyter 1 pip install jupyter 启
  • [人工智能-综述-9]:科学计算、大数据分析、人工智能、机器学习、深度学习全面比较

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 124245520 目录 第1章 sci
  • CORS漏洞原理分析

    CORS跨域漏洞原理分析 CORS全称为Cross Origin Resource Sharing即跨域资源共享 用于绕过SOP 同源策略 来实现跨域资源访问的一种技术 而CORS漏洞则是利用CORS技术窃取用户敏感数据 以往与CORS漏洞
  • Tika错误总结

    参考链接 https my oschina net u 3091870 blog 3032408 1 错误 NoSuchMethodError org apache commons compress archivers ArchiveStr
  • libspark,不懂日文怎么学……

    由于工作的需求 还有我未来的规划 决心研究 AR 这必然要研究 FLARToolKit 于是我找到了 libspark 接着我发现 这里面的东西太多了太强大了 而且是日本人的开源项目 所以里面很多源码注释都是日文的 于是我今天申请了goog
  • 微分方程(人口预测与传染病模型)

    一 定义 微分方程 含导数或微分的方程 微分方程的阶数 所含导数或微分的最高阶数 如y 2y 2x 0是三阶微分方程 微分方程的解 使得微分方程成立的函数 例如y 2x 0的解可以为x 或者x 1 微分方程的通解和特解 特解为满足等式条件即
  • React 的七个值得推荐的动画库

    今天 Web 应用程序用户界面有许多吸引用户的元素 为了满足这些需求 开发人员不得不寻找新的方法来实现带有动画和过渡的 UI 因此 开发了专门的库和工具来处理 Web 应用程序中的动画 在本文中 将讨论一些优秀的 React 动画库 以便于
  • 基于大数据的智能消防可视化平台

    0 前言 Hi 大家好 今天给大家介绍一个大数据可视化项目 大家可以用于自己的课设或毕设 可以灵活耦合任意数据 为自己的项目添加灵活的可视化动态效果 今天要分享的是 基于大数据的智能消防可视化平台 包含内容 完整可视化实现源码 html一键
  • redis5以上集群环境搭建

    1 系统环境及安装包准备 1 1 服务器 一台Centos7 服务器或虚拟机 ip地址 192 168 56 55 1 2 网络规划 master节点 slave节点 192 168 56 55 8001 192 168 56 55 800
  • 什么是接口测试呢

    什么是接口测试呢 测试人员通常所说的 接口测试 是针对系统各组件之间接口的一种测试 它属于功能测试 接口能测出普通界面操作难以发现的问题 如 我们都知道系统是由前端后端组成 一些数据在前端做了校验 后端同样也需要校验才能保证安全 界面操作显
  • 机器入门学习方法与学习路径

    机器学习方法与学习路径 1 数学基础 有无数激情满满大步向前 誓要在机器学习领域有一番作为的同学 在看到公式的一刻突然就觉得自己狗带了 是啊 机器学习之所以相对于其他开发工作 更有门槛的根本原因就是数学 每一个算法 要在训练集上最大程度拟合
  • 当四款AI大模型遇上考公真题,谁被难倒了?

    在当今社会 人工智能 AI 正以不可思议的速度发展 并在各个领域崭露头角 给人们的生活和工作带来许多便利 AI大模型被誉为人类 第二大脑 成为人们学习 生活 工作的 智能助手 公务员考试在我国教育领域独具特色 受到了众多考生的关注和青睐 众
  • postcss-px-to-viewport-8-plugin 适配

    postcss px to viewport 8 plugin 适配 简述 postcss px to viewport 8 plugin 是一个PostCSS插件 用于将以像素为单位的样式转换为视口单位 如vw vh 的样式 实现移动端适
  • java 输出编码_从代码看java输入输出中的编码和解码

    在java中 采用Unicode编码 英文字符和汉字都占两个字节 下面的代码都是在中文操作系统上执行的 系统采用GBK编码 1 看一下下面这段代码的编码和解码 当我们在键盘上敲入字符的时候 其采用的是GBK编码 比如我们敲入 b 它占两个字