Unicode字符串,unicode字符集是一种

  Unicode字符串,unicode字符集是一种

  第一篇字符编码2为什么需要字符编码3字节、字符和字符串4进程间的字符信息流5 Java和Unicode6 Python和Unicode

  1个字符编码

  

1、ASCII ANSI:

  字符代码是指用来表示字符的代码。读者在输入和存储文档时应该使用字符编码。

  ASCII码(单字节):可支持256位字符编码。

  ANSI(双字节):它可以支持65,000个字符代码。中文简体代码GB2312实际上是ANSI的一个代码页,不同代码页的内码在其他代码中无法正常显示。日语中文/繁体中文/简体中文使用不同的代码页。

  

2、Unicode:

  Unicode也是一种字符编码方法。它是由国际组织设计的编码方案,可以容纳世界上所有的语言和字符。其中,UTF-16和Unicode编码大致相同,UTF-8以8位为单位编码Unicode以节省存储空间。

  BOM(字节顺序标记)出现在文本文件的开头。在unicode编码中,BOM用于标识文件的编码格式,UTF-8的BOM代码为EF BB BF。

  下面是使用二进制查看器工具查看不同代码的文本文件,其内容为hello world!“你好!”:

  

utf-8

  

ansi

  2为什么需要字符编码?字符编码主要是实现字符信息(文本)在计算机系统中的存储和传输:

  字符,无论是中文还是英文,在计算机系统中都是以字节的形式存储的,比如hello world!你好!Txt文件,指定文件为utf-8格式,那么硬盘中存储的信息为EF BB BF 68 65 6C 6F 20 77 6F 72 6C 64 21 20 10 77 6F 72 6C 64 21。当我们使用记事本(本质上是一个程序)打开txt文件时,记事本会根据其编码识别相应的字符,然后在记事本的内容区显示相应的图形。

  字符可以是矢量图片或位图。

  3字节、字符、字符串Unicode (Unicode,Universal Code,Single Code)是国际组织制定的一套字符编码方案,可以容纳世界上所有的字符和符号。可以理解为一套规范,而不是具体的实现方案。UTF-8/UTF-16/UTF-32是一种用于存储或传输文本信息的特定编码方案。

  概念特征字符/字符串视图层/应用层可读写,可理解。矢量图或位图展示了Unicode逻辑层和语言层的统一性和一致性。utf-8,utf-16,gbk物理层:内存,磁盘,网络存储为主。需要注意的是,Unicode是一个逻辑代码,每个字符都有自己的Unicode编码,在程序中可以用u4f60的形式表示,和字节流有关。Utf-8是Unicode在物理层的一种编码方案,对应特定的字节流。

  4字符信息在进程间流动。字符信息是如何通过键盘输入电脑,然后保存在磁盘上的?

  首先打开cmd,然后输入echo you aaa.txt。

  如上图所示,当输入字符串“aa”时,输入法程序会根据当前本地字符集进行编码,然后输出到cmd程序,字节流为C4 E3 61 61。然后CMD会将字节流输出到磁盘文件a.txt中,相应的代码可以通过二进制浏览器查看为C4 E3 61 61。

  chcp [code_page]可以修改本地字符集。以下是一些常用的代码:

  96GBK(通常是默认代码)

  47美国英语

  65001 utf-8

  执行chcp 65001将字符集改为utf-8,右键单击标题栏,打开属性面板,在“选项”选项卡的底部会看到显示“当前代码页”的代码。然后选择“字体”选项卡,并将字体设置为Lucia控制台。

  执行echo你的aa b.txt,用二进制查看器检查文件代码为E4 BD A0 61 61。

  您可以通过ultra edit将gbk文件导出为utf-8文件。

  通用ASCII码:

  OD OA=rn

  20=空间

  另外特别要注意的一点是:

  windows平台的utf-8文件总是添加bom头,导致在其他编辑器中出现乱码,比如vs代码。

  5 Java与统一码字符是爪哇的基本类型(原类型) ,默认字符集为utf-8。多个字符的序列可以是字符数组(可变),也可以字符串(不可改变的).

  茶与字节是不同的,字节是数据存储的基本单元,任何数据信息,比如对象,图片,程序,最终都是以字节的形式来存储(分为大端、小端)的10 .茶是字符,同一字符的不同字符编码对应的字节流是不一样的。

  在爪哇中使用输入流/输出流来读写字节(字节)流,使用读者/作者来读写字符(字符)流。

  bytecharDataInputStream/DataOutputStreamFileReader/FileWriterObjectInputStream/ObjectInputStreamStringReader/StringWriterFileInputStream/file outputstream类hello char { public static void main(String[]args){ String s=String。(新字符[]{ 的值你, 好});系统。出去。println(s);//你好char c=你;char ni= u4f60//你char Hao=(char)0x 597d;//好系统。出去。println(c);//你byte[]b=s . getbytes();字节2十六进制字符串(b);//E4 BDA 0 e 5a 5 BD } public static void bytes 2 hex String(byte[]b){ String ret= ;for(int I=0;长度;I){字符串十六进制=整数。tohexstring(b[I]0x ff);如果(十六进制。length()==1){ hex= 0 十六进制;} ret=十六进制。toupper case();}系统。出去。打印(ret);} } 文本文件b.txt内容为u4f60u597d:

  通过爪哇代码将统一码与字符串进行转换:

  public class unicode { public static void main(String[]args){ buffered reader br=new buffered reader(new File reader(new File( b . txt ));字符串unicode str=br。readline();// u4f 60 u597d String str=unicode tostring(unicode str);//你好string unicode=stringToUnicode(str);//u4f60u597d } //字符串转换采用双字节对字符进行编码公共静态字符串String tounicode(String String){ String buffer unicode=new String buffer();for(int I=0;我弦乐。长度();I){ char c=string。查拉特(一);//取出每一个字符unicode。追加( u 整数。tohexstring(c));//转换为unicode }返回unicode。tostring();} //unicode转字符串公共静态字符串unicode tostring(String unicode){ String buffer String=new String buffer();string[]hex=unicode。split( u );for(int I=1;我十六进制长度;I){ int data=integer。parse int(hex[I],16);//转换出每一个代码点字符串。追加((char)数据);//追加成字符串}返回字符串。tostring();}} 6 Python与Unicode Python没有茶类型,一个字符等同于长度为一的字符串,字符串与字节流的转换形式更简洁:

  你好,世界!你好!# 默认为utf-8ni=u4f60# 你 的unicodeni2=chr(0x4f60) # 你 的采用双字节对字符进行编码码十六进制整数转字符# 方法1bytes(ni,encoding= utf-8 )# xe4 xbd xa0u=bytes(s,encoding=utf-8) # bhello world!xe4xbdxa0xe5xa5xbd!g=bytes(s,编码= GB 2312 )# b hello world!xc4xe3xbaxc3!# 方法2 U2=s . encode( utf-8 )G2=s . encode( GB 2312 )str(u,encoding=utf-8)# hello world!你好!str(g,encoding=gb2312)# hello world!你好!

Unicode字符串,unicode字符集是一种