ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-01-22 21:52:49  阅读:416  来源: 互联网

标签:外码 UTF String 16 getBytes 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有