字符和编码简单入门

字符和编码入门

1. 字符(Base Java)

  • char存储字符。表示System.Char 类型的一个实例。
    Java使用Unicode来表示字符。
  • 使用Unicode简化了全球应用程序的开发。
  • Unicode可以表示在所有人类语言中找到的所有字符。
  • Java char是16位类型。

2. 字符编码

由于我们的文字中存在着大量的重复字符,而计算机天生就是用来处理数字的,为了减少我们需要保存的信息量,我们可以使用一个数字编码来表示每一个字符,通过对每一个字符规定一个唯一 的数字代号, 然后,对应每一个代号,建立其相对应的图形,这样,在每一个文件中,我们只需要保存每一个 字符的编码就相当于保存了文字,在需要显示出来的时候,先取得保存起来的编码,然后通过编码表,我们可以查到字符对应的图形,然后将这个图形显示出来,这样我们就可以看到文字了,这些用来规定每一一个字符所使用的代码的表格,就称为编码表。编码就是对我们日常使用字符的一种数字编号。

3. ASCII 美国信息交换标准代码

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

image.png

4. 使用Java代码的字符例子

4.1 字符转换

public class main {
    public static void main(String args[]) {
        //1. 打印字符
        char c = 'A';
        System.out.println(c);
        //2. 字符和整数转
        System.out.println((int)c);
        //3. 数字到字符
        System.out.println((char)'\u0041');
    }
 }

A 65 A

4.2 打印所有ASCII

public class main {
    public static void main(String args[]) {
         printAscii();
    }
    static void printAscii(){
        for (int i = 0; i < 128; i++) {
            if (i % 10 == 0) {
                System.out.println();
            }
            System.out.print(String.format("%3d:%c ", i, (char)i));
        }
    }
  0:   1:   2:   3:   4:   5:   6:   7:   8   9:     
 10:
  14:  15:  16:  17:  18:  19: 
 20:  21:  22:  23:  24:  25:  26:  27:  28:  29: 
 30:  31:  32:   33:!  34:"  35:#  36:$  37:%  38:&  39:' 
 40:(  41:)  42:*  43:+  44:,  45:-  46:.  47:/  48:0  49:1 
 50:2  51:3  52:4  53:5  54:6  55:7  56:8  57:9  58::  59:; 
 60:<  61:=  62:>  63:?  64:@  65:A  66:B  67:C  68:D  69:E 
 70:F  71:G  72:H  73:I  74:J  75:K  76:L  77:M  78:N  79:O 
 80:P  81:Q  82:R  83:S  84:T  85:U  86:V  87:W  88:X  89:Y 
 90:Z  91:[  92:\  93:]  94:^  95:_  96:`  97:a  98:b  99:c 
100:d 101:e 102:f 103:g 104:h 105:i 106:j 107:k 108:l 109:m 
110:n 111:o 112:p 113:q 114:r 115:s 116:t 117:u 118:v 119:w 
120:x 121:y 122:z 123:{ 124:| 125:} 126:~ 127:� 

5. 扩展ASCII – ISO8859-(1-9)

由于ASCII 的限制性,西欧各国制定了ISO-8859 编码。

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
此字符集支持部分于欧洲使用的语言。

包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。

image.png

6. 中文编码

  • GB2312

GB/T 2312,GB/T 2312–80 或 GB/T 2312–1980 是中华人民共和国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,通常简称GB(“国标”汉语拼音首字母),又称GB0,由中国国家标准总局于1980年发布,1981年5月1日实施。GB/T 2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB/T 2312。

  • GBK

汉字内码扩展规范,称GBK,全名为《汉字内码扩展规范(GBK)》1.0版,由中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司和电子工业部科技与质量监督司1995年12月15日联合以《技术标函[1995]229号》文件的形式公布。 GBK共收录21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。

  • GB 18030
    全称《信息技术 中文编码字符集》,是中华人民共和国国家标准所规定的变长多字节字符集。其对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持Unicode(GB 13000)的所有码位。GB 18030共收录汉字70,244个。

7. Unicode

Unicode,中文又称万国码、国际码、统一码、单一码,是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

Unicode伴随着通用字符集的标准而发展,同时也以书本的形式[1]对外发表。Unicode至今仍在不断增修,每个新版本都加入更多新的字符。目前最新的版本为2020年3月公布的13.0.0[2],已经收录超过13万个字符(第十万个字符在2005年获采纳)。Unicode涵盖的资料除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。

  • Unicode是为了解决传统的字符编码方案的局限而产生的
  • 它为每种语言中的每个字符设定了统一并且唯一的二进制编码
  • Unicode 占 2 个字节
  • 最大值 0xFFFF

7.1 汉字Unicode范围

image.png

8. 打印所有unicode

static void printUnicode() {
    StringBuilder sb = new StringBuilder();
    for(int i=0; i< 0xFFFF; i ++) {
        if (i % 50 == 0) {
            sb.append("\r\n");
        }
        sb.append(String.format("%3c", (char)i));
    }
    System.out.print(sb);
}

9. UTF

  • UTF,是Unicode Transformation Format的缩写
    UTF 是 为了解决已有字符集不支持unicode的方案. 是一种针对Unicode的可变长度字符编码
    意为Unicode转换格式

  • UTF-8是UTF中最常用的转换格式
    是UNICODE的一种变长字符编码
    现在已经标准化为RFC 3629
    被广泛使用

  • 其它UTF编码
    UTF-8、UTF-16、UTF-3 、 UTF-7 等,不一一赘述.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容