JAVA—编码问题
2018-11-26 07:56:54来源:博客园 阅读 ()
一、编码。(引用 百度百科)
编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。
二、程序中编码不一致。
程序中 IO读取 文件,如果编码不一致,就会造成乱码的情况,
执行以下代码 不同编码 , 输出的结果就会出现乱码情况。
String a="未知的路上ABC"; byte[] bytea=a.getBytes("utf-8"); System.out.println("编码一致,输出结果"); String a1=new String(bytea); System.out.println(a1); System.out.println("编码不一致,输出结果"); String a2=new String(bytea,"utf-16be"); System.out.println(a2);
输出结果为:
三、不同编码 在内存中占用的字节。
1、gbk编码。
String s="未知ABC"; //gbk编码 中文占用两个字节,英文占用一个字节 byte[] bytes1=s.getBytes("gbk"); for (byte b:bytes1){ System.out.print(Integer.toHexString(b&0xff)+" "); }
最后输出结果为:ce b4 d6 aa 41 42 43
可以看出 gbk编码下, 中文占用两个 字节,英文占用一个字节。
2、utf-8编码。
//utf-8编码 中文占用3个字节,英文占用一个字节 byte[] bytes2=s.getBytes("utf-8"); for (byte b:bytes2){ System.out.print(Integer.toHexString(b&0xff)+" "); }
最后输出结果为:e6 9c aa e7 9f a5 41 42 43
可以看出 utf-8编码下, 中文占用三个 字节,英文占用一个字节。
3、utf-16be 编码
//utf-16be 编码 中文只能用2个字节,英文占用2 个字节 byte[] bytes3=s.getBytes("utf-16be"); for (byte b:bytes3){ System.out.print(Integer.toHexString(b&0xff)+" "); }
最后输出结果为:67 2a 77 e5 0 41 0 42 0 43
可以看出 utf-16be 编码下, 中文占用两个 字节,英文占用两个字节。
四、总结。
1、当你的字节序列式某种编码时,这个时候想把字节序列变成字符串。也需要用这种编码方式,否则会出现乱码。
2、文本文件,就是字节序列,可以是任意编码的字节序列,如果我们在中文机器上创建文件,那么该文本则只认识ansi编码。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:渗透测试_Java代码审计
下一篇:动态代理
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash