VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • java io之编码

结论1:

utf-8 中文占3个字节,英文占1个字节,数字占1个字节

gbk 中文占2个字节,英文占1个字节,数字占1个字节

utf-16be 中文占2个字节,英文占2个字节,数字占2个字节

java是双字节编码。不管中英阿拉伯数字,都是双字节编码。

结论2:

字节序列是使用的某编码,在字节序列转换成字符串时,就要用该编码方式

如果说在某个项目下,打开的文本文件是乱码,那拷到本机或者其他机器上,也许就不是乱码了。因为项目idea默认采用的编码方式可能和文本文件不是一种编码,但是本机或者其他机器上的编码格式也许和这个文件是相同的。反之,某个项目下,打开的文本文件是明文,但是拷到本机或者其他机器上是乱码,也是同样的道理。

结论3:

文本文件就是字节序列,可以是任意编码方式的字节序列。如果在中文机器上创建文件,那默认就是ansi编码格式的,如果在mac机器上创建文件,那默认是utf-8编码格式的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package Demo_1_Encode;
 
import java.io.UnsupportedEncodingException;
 
class Encode {
    public static void main(String args[]) throws UnsupportedEncodingException {
        String s = "美团a4";
        byte[] bs1 = s.getBytes();//系统默认编码utf-8,中文占3个字节,英文占1个字节,数字占1个字节
        for(byte b:bs1){
            System.out.print(Integer.toHexString(b&0xff)+" ");
        }
        System.out.println();
        byte[] bs2 = s.getBytes("gbk");//中文占2个字节,英文占1个字节,数字占1个字节
        for(byte b:bs2){
            System.out.print(Integer.toHexString(b&0xff)+" ");
        }
        System.out.println();
        byte[] bs3 = s.getBytes("utf-16be");//中文占2个字节,英文占2个字节,数字占2个字节
        for(byte b:bs3){
            System.out.print(Integer.toHexString(b&0xff)+" ");
        }
        System.out.println();
        String s1 = new String(bs1,"gbk");
        System.out.println(s1);
        String s2 = new String(bs1,"utf-8");
        System.out.println(s2);
    }
}

  原文:https://www.cnblogs.com/ansonwan/p/15195360.html


相关教程