java字符串的编码格式,java采用的字符编码方式
00-1010字符串编码方法idea中默认的字符串编码方法是utf-8utf-8和GBK中字符串所占的字节数。设置字符串编码,用UTF-8UTF-16UTF-32java对编码进行转码,解决编码乱码问题。
00-1010 utf-8是unicode的一种实现,即其字节结构有特殊要求。所以我们说一个汉字的范围是0X4E00到0x9FA5,指的是unicode值。至于放在UTF-8里面,是用三个字节组织的,所以可以看出Unicode是给定字符的范围,定义了这个字的码值。至于具体的实现方式,有多种实现方式。
目录
system . out . println(system . getproperty( file . encoding ));
更改编码方法:设置-文件编码-全局编码=gbk
输出结果:
字符串的编码方式
public static void print(String s){ for(byte aByte :s . getbytes()){ system . out . println(aByte);} system . out . println(-);}GBK编码方式下,键盘在中文状态
字母占一个字节,符号或汉字占两个字节。
public static void main(String[]args){ String S1= 2 ;打印(S1);字符串S2=;;打印(S2);S3=广场;打印(S3);S4= 23平方英尺;打印(S4);}
gbk编码方式下,键盘在英文状态
字母占一个字节,符号占两个字节,汉字占两个字节。
public static void main(String[]args){ String S1= 2 ;打印(S1);字符串S2=;;打印(S2);字符串s3= f打印(S3);S4= 23平方英尺;打印(S4);}
utf-8的方式下
中文,中文符号占3个字节,英文符号占1个字节,字母数字字符占1个字节。
public static void main(String[]args){ String S1= 2 ;打印(S1);字符串S2=;;打印(S2);S3=广场;打印(S3);S4= 23平方英尺;打印(S4);}
小结:
在utf-8下,中文符号占3个字节,英文符号和字母数字字符占1个字节。在gbk下,中文符号占用2个字节,英文符号和字母数字字符占用1个字节。
idea中默认的字符串编码方式为utf-8
Unicode (Unicode,Universal Code,Single Code)是计算机科学领域的行业标准,包括字符集、编码方案等。Unicode的出现是为了解决传统字符编码方案的局限性。它为每种语言中的每个字符设置了统一的、唯一的二进制编码,以满足跨语言、跨平台的文本转换和处理的要求。R & ampd始于1990年,1994年正式公布。
Unicode是由国际组织制定的字符编码方案,可以容纳世界上所有的字符和符号。
目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。
UTF-8
UTF-8以字节为单位对Unicode进行编码。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。
用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
UTF-16
UTF-16编码以16位无符号整数为单位。
UTF-16是Unicode字符编码五层次模型的第三层:字符编码表(Character Encoding Form,也称为 "storage format")的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。
UTF-16是Unicode的其中一个使用方式。 UTF是 Unicode TransferFormat,即把Unicode转做某种格式的意思。
它定义于ISO/IEC 10646-1的附录Q,而RFC2781也定义了相似的做法。
在Unicode基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用2字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个2字节的值来储存。UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。
UTF-32
UTF-32编码以32位无符号整数为单位。
Unicode的UTF-32编码就是其对应的32位无符号整数。
UTF-32 (或 UCS-4)是一种将Unicode字符编码的协定,对每一个Unicode码位使用恰好32位元。其它的Unicode transformation formats则使用不定长度编码。因为UTF-32对每个字符都使用4字节,就空间而言,是非常没有效率的。特别地,非基本多文种平面的字符在大部分文件中通常很罕见,以致于它们通常被认为不存在占用空间大小的讨论,使得UTF-32通常会是其它编码的二到四倍。虽然每一个码位使用固定长定的字节看似方便,它并不如其它Unicode编码使用得广泛。j
java中编码
String gbkStr = "你好哦!"; //源码文件是GBK格式,或者这个字符串是从GBK文件中读取出来的, 转换为string 变成unicode格式//利用getBytes将unicode字符串转成UTF-8格式的字节数组byte[] utf8Bytes = gbkStr.getBytes("UTF-8"); //然后用utf-8 对这个字节数组解码成新的字符串String utf8Str = new String(utf8Bytes, "UTF-8");
简化后就是:
unicodeToUtf8 (String s) {return new String( s.getBytes("utf-8") , "utf-8");}
UTF-8 转GBK原理也是一样
return new String( s.getBytes("GBK") , "GBK");
解决编码乱码
java 获取系统中默认的编码
//方法一:中文操作系统中打印GBK System.out.println(System.getProperty("file.encoding")); //方法二:中文操作系统中打印GBK System.out.println(Charset.defaultCharset());
以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。