Java不同编码方式,中英文字符所占字节数
有人说Java中中文字符占2个字节,也有人说占3个字节,甚至还有人说占4个字节;
有人说Java中英文字符占1个字节,也有人说占2个字节,甚至还有人说占4个字节;
那么到底谁说的对?我的回答是都没错,具体要看是什么编码方式。纸上得来终觉浅,绝知此事要躬行,我编写了下边的代码,运行输出的结果就是答案。
代码如下:
public class Test { public static void main(String[] args){ String[] charsetNames={ "UTF-8", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-32", "UTF-32BE", "UTF-32LE", "UNICODE", "GBK", "GB2312", "GB18030", "ISO8859-1", "BIG5", "ASCII" }; for(int i=0;i<charsetNames.length;i++){ printByteLength(charsetNames[i]); } } /** * String类的不带参数的getBytes()方法会以程序所运行平台的默认编码方式为准来进行转换, * 在不同环境下可能会有不同的结果,因此建议使用指定编码方式的getBytes(String charsetName)方法。 */ public static void printByteLength(String charsetName){ String en="a"; //一个英文字符 String zh="啊"; //一个中文字符 try { System.out.println(charsetName+"编码英文字符所占字节数:"+en.getBytes(charsetName).length); System.out.println(charsetName+"编码中文字符所占字节数:"+zh.getBytes(charsetName).length); System.out.println(); } catch (UnsupportedEncodingException e) { System.out.println("非法编码格式!"); } } }
运行结果:
UTF-8编码英文字符所占字节数:1 UTF-8编码中文字符所占字节数:3 UTF-16编码英文字符所占字节数:4 UTF-16编码中文字符所占字节数:4 UTF-16BE编码英文字符所占字节数:2 UTF-16BE编码中文字符所占字节数:2 UTF-16LE编码英文字符所占字节数:2 UTF-16LE编码中文字符所占字节数:2 UTF-32编码英文字符所占字节数:4 UTF-32编码中文字符所占字节数:4 UTF-32BE编码英文字符所占字节数:4 UTF-32BE编码中文字符所占字节数:4 UTF-32LE编码英文字符所占字节数:4 UTF-32LE编码中文字符所占字节数:4 UNICODE编码英文字符所占字节数:4 UNICODE编码中文字符所占字节数:4 GBK编码英文字符所占字节数:1 GBK编码中文字符所占字节数:2 GB2312编码英文字符所占字节数:1 GB2312编码中文字符所占字节数:2 GB18030编码英文字符所占字节数:1 GB18030编码中文字符所占字节数:2 ISO8859-1编码英文字符所占字节数:1 ISO8859-1编码中文字符所占字节数:1 BIG5编码英文字符所占字节数:1 BIG5编码中文字符所占字节数:2 ASCII编码英文字符所占字节数:1 ASCII编码中文字符所占字节数:1
原文地址:https://www.jianshu.com/p/c34d3e5790a4
相关推荐
-
花了几个小时总结了一些容易出错的 Java 知识点! Java基础
2020-6-20
-
Java多线程的问题及解答 Java基础
2019-8-21
-
后台单元测试总结 Java基础
2020-6-20
-
一款快速生成安卓shape的插件–NoCodeShape Java基础
2020-6-16
-
哥们,B/S了解吗?——啥玩意,我是敲代码的 Java基础
2019-7-24
-
CSS3输出PDF打印的小技巧 Java基础
2020-7-7
-
Java利用Mybatis进行数据权限控制 Java基础
2019-7-8
-
Rpc简单入门 Java基础
2019-7-24
-
leetcode506. Relative Ranks Java基础
2020-6-13
-
Android使用矢量图(SVG, VectorDrawable)实践篇 Java基础
2019-8-22