java编码格式
来源:互联网 发布:java编写宿舍管理系统 编辑:程序博客网 时间:2024/06/15 06:44
主要区分清楚内码(internal encoding)和外码(external encoding)就好了。
内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;
外码是程序与外部交互时外部使用的字符编码。“外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方都可以认为是“外部”。例如,外部可以是序列化之后的char或String,或者外部的文件、命令行参数之类的。
Java语言规范规定,Java的char类型是UTF-16的code unit,也就是一定是16位(2字节);
然后字符串是UTF-16 code unit的序列:
这样,Java规定了字符的内码要用UTF-16编码。或者至少要让用户无法感知到String内部采用了非UTF-16的编码。
“感知”可以是多方面的,例如随机访问某个下标的code unit(String.charAt())应该是O(1)操作,这只有使用UTF-16或者别的“定长”编码才可以做到。注意我这里说的“定长”特指code unit定长,而不是说code point定长。
String.getBytes()是一个用于将String的内码转换为指定的外码的方法。无参数版使用平台的默认编码作为外码,有参数版使用参数指定的编码作为外码;将String的内容用外码编码好,结果放在一个新byte[]返回。
内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;
外码是程序与外部交互时外部使用的字符编码。“外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方都可以认为是“外部”。例如,外部可以是序列化之后的char或String,或者外部的文件、命令行参数之类的。
Java语言规范规定,Java的char类型是UTF-16的code unit,也就是一定是16位(2字节);
然后字符串是UTF-16 code unit的序列:
这样,Java规定了字符的内码要用UTF-16编码。或者至少要让用户无法感知到String内部采用了非UTF-16的编码。
“感知”可以是多方面的,例如随机访问某个下标的code unit(String.charAt())应该是O(1)操作,这只有使用UTF-16或者别的“定长”编码才可以做到。注意我这里说的“定长”特指code unit定长,而不是说code point定长。
String.getBytes()是一个用于将String的内码转换为指定的外码的方法。无参数版使用平台的默认编码作为外码,有参数版使用参数指定的编码作为外码;将String的内容用外码编码好,结果放在一个新byte[]返回。
String a = "我q";int size = a.getBytes().length;System.out.println(size); int len1 = a.getBytes("ISO8859-1").length;System.out.println("ISO8859-1: "+len1); int len2 = a.getBytes("GB2312").length;System.out.println("GB2312: "+len2); int len = a.getBytes("GBK").length;//输出8 System.out.println("GBK: "+len); System.out.println("UTF-8:" + a.getBytes("UTF-8").length); System.out.println("UTF-16:" + a.getBytes("UTF-16").length); System.out.println("Unicode:" + a.getBytes("Unicode").length);
6(系统默认)
ISO8859-1: 2
GB2312: 3
GBK: 3
UTF-8:4
UTF-16:6
Unicode:6
0 0
- Java 编码格式研究
- java编码格式模版
- java txt 编码格式
- Java编码格式规范
- java中的编码格式
- java 中的编码格式
- java编码格式
- Java 编码格式
- java返回编码格式
- java编码格式
- JAVA编码格式转换
- java基础教程-编码格式
- Java中的编码格式
- Java基础:编码格式
- java常用编码格式
- JAVA中的编码格式问题
- java判断字符编码格式
- Java支持的编码格式
- 8.2.1.10 Nested-Loop Join Algorithms 8.2.1.10嵌套循环连接算法
- GlusterFS集群文件系统研究
- Error: Cannot retrieve repository metadata (repomd.xml) for repository: mariadb. Please verify its p
- cxf /webservice出错 org.apache.cxf.interceptor.Fault: No such operation: (HTTP GET PATH_INFO: /CxfDem
- 阿里百川Android应用
- java编码格式
- svn 命令行下常用的几个命令
- mac 终端 常用命令
- 如何在Mac上使用Swift调用C接口开发条形码应用
- 总结系列-LayoutInflater的inflate函数用法详解
- Java的注解机制——Spring自动装配的实现原理
- Android 单元测试(四)测试 Activity和Fragment
- WPF 多线程---- 子线程操作界面主线程的元素
- Ubuntu 一条命令安装LAMP