java file 字符集_字符集与编码--Java class文件的编码方式

1 public static void main(String[] args) throws UnsupportedEncodingException {

2 /**

3 * 1. char 和 String 在内存中保存都使用Java内码,也即UTF-16

4 * 2. char 在class文件中使用UTF-16表示

5 * 3. String在class文件中使用UTF-8表示

6 * 4. 序列化和Class文件中用"modified UTF-8",不是UTF-8。参考https://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html#modified-utf-8

7 *

8 * 5. 问题:内存存储的是UTF-16编码的字节,那么String.getBytes("UTF-8")应该是从UTF-16到UTF-8的转换过程

9 * 解答:String.getBytes()是一个用于将String的内码转换为指定的外码的方法(问题中UTF-8就是指定的外码)。

10 * 无参数版使用平台的默认编码作为外码,有参数版使用参数指定的编码作为外码。

11 * 将String的内容用外码编码好,结果放在一个新byte[]返回。

12 *

13 *

14 * @date 2020/1/17

15 * @return

16 */

17 char aaa = '中'; // class 文件中是(UTF-16) 4E 2D

18 String bbb = "a中"; // class 文件中是(UTF-8) 61 E4 B8 AD

19

20 System.out.println(Integer.toHexString(aaa));//4E2D

21

22 System.out.println(Arrays.toString(bbb.getBytes("UTF-8")));//61,E4,B8,AD

23 System.out.println(Arrays.toString(bbb.getBytes("UTF-16"))); //带BOM的字节数组:EF,FF,00,61,4E,2D

24 System.out.println(Arrays.toString(bbb.getBytes("UTF-16be"))); //无BOM的字节数组:00,61,4E,2D

25

26 }

标签:外码,UTF,String,16,getBytes,Java,编码方式,class

来源: https://www.cnblogs.com/lingxue3769/p/12203851.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值