文档章节

Java IO流 序列列一:字符编码

哈鼎
 哈鼎
发布于 2014/11/09 14:48
字数 388
阅读 178
收藏 2

1. 字符编码

先来看一下不同的字符编码

String s = "爪哇ABC";

1.1 utf-8编码

utf8编码:中文占用3个字节,英文占用1个字节

byte[] bytes = s.getBytes("utf-8");

         for(byte b : bytes){

         //把字节(转换成了int)以16字节的方式显示

         System.out.print(Integer.toHexString(b & 0xff) + ");

     }

     System.out.println();//换行

     输出:e6  85  95  e8  af  be  41  42  43

1.2 gbk编码

gbk编码:中文占用2个字节,英文占用1个字节

byte[] bytes2 = s.getBytes("gbk");

     for (byte b : bytes2) {

         System.out.print(Integer.toHexString(b & 0xff) + " );

     }

     System.out.println();

     输出:c4  bd  bf  ce  41  42  43

1.3 utf-16be编码

utf-16be编码是Java的编码格式,中文占用2个字节,英文中文占用2个字节

byte[] bytes3 = s.getBytes("utf-16be");

     for (byte b : bytes3) {

         System.out.print(Integer.toHexString(b & 0xff) + ");

     }

     System.out.println();

     输出:61  55  8b  fe  0  41  0  42  0  43

1.4 乱码问题

造成乱码问题的原因很简单,是因为编解码采用的字符编码不一致造成的。如:上面的bytes3字节数据是utf-16be格式的字节序列,如果解码的时候用utf-8的话,就会出现乱码。

String str1 = new String(bytes3);

     System.out.println(str1);

     输出:aU��

如何解决乱码问题呢? 方法也很简单,就是让编解码采用的字符编码一致即可。

String str2 = new String(bytes3, "utf-16be");

     System.out.println(str2);

1.5 文本文件

      * 文本文件就是字节序列,可以是任意编码的字节序列

      * 如果在中文机器上创建文本文件,那么该文本文件只认识ANSI编码

© 著作权归作者所有

共有 人打赏支持
哈鼎
粉丝 4
博文 19
码字总数 7181
作品 0
深圳
私信 提问
JAVASE之JAVAI/O流篇

一 Java IO IO流用来处理设备之间的数据传输。 Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标...

刘信坚
07/30
0
0
java基础io流——配角也风流(不求甚解)

本章简单介绍几个常见的io流派生。 1:数据操作流(操作基本类型数据的流)(理解) 代码示例: 2:内存操作流(理解) 用于处理临时存储信息的,程序结束,数据就从内存中消失。 代码示例: 注:查看...

潇潇漓燃
05/30
0
0
关于 Java IO(二):从面向字节到面向字符

在上一篇文章中,我们以面向字节的输入为例,介绍了 Java 中 IO 的结构。在这篇文章中,主要介绍面向字节的输入输出是怎么转换到面向字符的输入输出的。 面向字符的输入输出指的是输入输出的...

Happioo
04/09
0
0
Java中的字符集编码入门(五)

如果你是JVM的设计者,让你来决定JVM中所有字符的表示形式,你会不会允许使用各种编码方式的字符并存? 我想你的答案是不会,如果在内存中的Java字符可以以GB2312,UTF-16,BIG5等各种编码形...

Java开发者
2010/05/05
0
0
JavaIO/输出输入入门

IO称之为输入输出,Java的IO是通过java.io包下的类和接口来支持,包含两大类:输入,输出. 在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Write...

Zhao-Qian
2013/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用cefSharp实现网页自动注册登录的需要注册的一些事项

最近朋友有个需要自动注册登录点击的事,我帮着写了写,好久没写过这东西了,在写的过程中总结了需要注意的一些事项。 一、换IP之后要测试一下速度,我目前用的最简单的测试方法就是20-30秒加...

我退而结网
14分钟前
1
0
Go语言中使用 BoltDB数据库

boltdb 是使用Go语言编写的开源的键值对数据库,Github的地址如下: https://github.com/boltdb/bolt boltdb 存储数据时 key 和 value 都要求是字节数据,此处需要使用到 序列化和反序列化。...

Oo若离oO
15分钟前
1
0
zookeeper分布式锁

//lock 锁 定义分布式锁public interface Lock {//获取锁public void getLock();//释放锁public void unLock();} public abstract class ZookeeperAbstractLock implements Loc......

熊猫你好
22分钟前
0
0
mysql_事务隔离机制

事务隔离机制 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在mysql中,事务支持是在引擎层实现的。mysql是一个支持多引擎的系统,但并不是所有引擎都支持事务,比如mysql...

grace_233
24分钟前
0
0
不学无数——Java中IO和NIO

JAVA中的I/O和NIO I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其...

不学无数的程序员
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部