深入理解计算机编码与字符集的区别 | 您所在的位置:网站首页 › 计算机中字符编码的表示方法有 › 深入理解计算机编码与字符集的区别 |
1、编码表与字符集的区别
比如,unicode是字符集(万国码),但计算机如何存储编码(几个字节存储),这时候要用到编码规则(UTF-8) 举例: 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件 utf-8中文3个字节,英文1个字节。gbk中文2个字节,英文1个字节。 2、ASCII扩展码字符和GBK混合写入文件使用Java IO流同时将欧元符€和汉字写入文件。 FileOutputStream out = new FileOutputStream("E:/tmp/character.txt"); out.write("你好啊".getBytes("GBK")); // 不能以这种方式写 // out.write("€".getBytes("GBK")); out.write(128); out.close();将文件传到linux上之后,执行命令cat test1.txt|od -c,€会显示成200(od表示使用八进制显示),此时说明是正确的 3、Java中关于ASCII扩展码字符的处理 char c = 251; // 扩展ASCII码中字符√的编码 System.out.println(c); // û// 扩展ASCII不是国际标准,编码为251的字符,就不是√,而是û。而√对应的unicode编码是8730,输出8730才能得到√ System.out.println((int)'√'); // 8730 System.out.println((char)8730); // √// 输出扩展ASCII码中字符€的unicode编码 System.out.println((int)'€'); System.out.println((char)8364);注意:java中使用unicode字符表示字符串时,是十六进制,如下代码所示。 System.out.println("\u20AC"); // €的unicode码的十六进制针对扩展的ASCII码,不同的国家有不同的字符集,所以它并不是国际标准。 参考链接: 字符编码中ASCII、Unicode和UTF-8的区别 - 风行风中 - 博客园 ANSI是什么编码?_imxiangzi的专栏-CSDN博客_ansi编码 |
CopyRight 2018-2019 实验室设备网 版权所有 |