字符集或者说字符编码就是给字符定义了数值编号以及数值编号存储格式。
成都创新互联公司是一家专业提供宜都企业网站建设,专注与网站建设、成都网站制作、HTML5建站、小程序制作等业务。10年已为宜都众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
严格来说字符集和字符编码是两个概念: charset 是 character set 的简写,即字符集。 encoding 是 charset encoding 的简写,即字符集编码,简称编码。 字符集:定义了每个字符对应的二进制数值关系,也就是给字符定义了一个数值编号。 字符编码:定义了该数值怎么存储(用几个字节来表示,数值二进制格式(有无特定标示))。 但有时候又可以认为是同一个意思:因为唯一对应。 比如:ASCII、IOS-8859-1、GB2312、GBK等等既是字符集又是字符编码。 不是同一个意思情况:一个字符集对应多个实现形式。 比如Unicode只是字符集,对应的字符编码却有多个: UTF-8、UTF-16、UTF-32 。 补充:
因为历史原因,最初是一一对应可以看成一个意思,后来出现一对情况拆分两个意思,
所以有些地方认为是一个意思,有些不这样认为,存在混淆,得自己明辨是非。 比如:charset也表示字符编码的意思。 在 html中用charset指定字符集: "UTF-8"> 准确来说UTF-8是字符编码。 而在xml中用encoding表示字符编码显得更加严紧: "1.0" encoding="UTF-8"?> 实际我们只要关心字符编码,因为由它决定存取和传输的格式。 值注意:关于Unicode的多重意思。 (1)Unicode 标准 (2)Unicode 字符集 (3)Unicode 的抽象编码(编号),也即码点(code point) (4)Unicode 的一个具体编码实现,通常即为变长的 UTF-16(16 或 32 位),又或者是更早期的定长 16 位的 UCS-2 特别注意java中编码的问题!: 1.常说的java采用Unicode编码,用两个字节表示字符。 这里的Unicode编码的意思是用定长UTF-16字符编码,也就是运行时内存中一个字符用两个字节存储。
2.有时候说java默认是UTF-8编码.
其实说的是jvm默认编码是UTF-8,
该编码默认用处:字符和字节数据组的转换,io流转换。
如果没有设置jvm默认编码,那么默认使用操作系统的编码。
也可以自己更改jvm的编码:更改JVM参数-Dfile.encoding=UTF-8。