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

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编码

时间: 2024-10-10 14:37:56

Java IO流 序列列一:字符编码的相关文章

【Java IO流】字节流和字符流详解

字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3.从流的内容来讲,有字节和字符之分. 这篇文章先后讲解IO流中的字节流和字符流的输入和输出操作. 一.字节流 1)输入和输出流 首先,字节流要进行读和写,也就是输入和输出,所以它有两个抽象的父类InputStream.OutputStream. InputStream抽象了应用程序读取数据的方式,即

Java IO流 之 FileReader 以字符读取文件

http://www.verejava.com/?id=1699465856669 package com.io; import java.io.*; public class TestReader { public static void main(String[] args) { Reader reader=null; try { //建立了跟文件 english.txt 的连接 reader=new FileReader(new File("res/chinese.txt"));

Java IO流 之 FileWriter 以字符写入文件

http://www.verejava.com/?id=16994663236510 package com.io; import java.io.*; public class TestWriter { public static void main(String[] args) { Writer writer=null; try { writer=new FileWriter(new File("res/writer_test.txt")); //向文件中写入数据 String c

Java IO流 序列三:RandomAccessFile类

3. RandomAccessFile类 3.1 RandomAccessFile类简介 1. 是Java提供的对文件内容的访问,既可以读文件,也可以写文件 2. 可以随机访问文件,可以访问文件的任意位置 3. 读写方式:rw(可读写), r(只读) 例:RandomAccessFile raf = new RandomAccessFile(file,"rw") 4. 由于是随机访问,该类提供了一个指针,默认打开文件的时候指正文件在开头 pointer = 0 5. 写方法 raf.w

J2SE知识点归纳笔记(七)---Java IO Part 4:基本字符流

J2SE知识点归纳笔记(七)---Java IO Part 4:基本字符流                                                                 --转载请注明出处:coder-pig 本节引言: 上一节中,我们对于Java IO流中的一些基本字节流进行了学习,他们都是InputStream与 OutputStream的子类;本节学习的字符流则是Reader与Writer的子类,好了,话不多说, 开始本节内容! 本节正文: 1.Reade

Java基础知识强化之IO流笔记39:字符流缓冲流之特殊功能

1. 字符缓冲流的特殊方法 BufferedWriter: 1 public void newLine():根据系统来决定换行符 BufferedReader: 1 public String readLine():一次读取一行数据 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 2. 代码示例: 1 package cn.itcast_05; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedW

java io流(字符流) 文件打开、读取文件、关闭文件

java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public static void main(String[] args) throws Exception{ //打开文件 //字符流方式打开 //字符流每次按一个字符读取 FileReader wj = new FileReader("D:/java/kj/javanew/src/Index.java"

学习笔记-java IO流总结 转载

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流