JAVA—编码问题
一、编码。(引用 百度百科)
编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。
二、程序中编码不一致。
程序中 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编码。
JAVA—编码问题的更多相关文章
- java编码过滤器
1.java编码过滤器的作用: java过滤器能够对目标资源的请求和响应进行截取,过滤信息执行的优先级高于servlet. 2.java过滤器的使用: (1)编写一个普通的java类,实现Filter ...
- java中文乱码解决之道(四)-----java编码转换过程
前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的.但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何 ...
- 资料推荐--Google Java编码规范
之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...
- Java编码规范
1. Java命名约定 除了以下几个特例之外,命名时应始终采用完整的英文描述符.此外,一般应采用小写字母,但类名.接口名以及任何非初始单词的第一个字母要大写.1.1 一般概念 n 尽量使用完整 ...
- 10个精妙的Java编码最佳实践
这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表.和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不 ...
- Eclipse formater(google Java 编码规范)
1. 谷歌Java编码规范 http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 2. 下载配置文件: https://co ...
- 【JAVA编码专题】总结
第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
- 【JAVA编码专题】深入分析 Java 中的中文编码问题
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么 ...
- java中文乱码解决之道(四)—–java编码转换过程
原文出处:http://cmsblogs.com/?p=1475 前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的. ...
- Java 编码 字符集
Java 编码 字符集 @author ixenos 1. 字符集 a) 字符集建立了两字节Unicode码元序列与使用本地字符编码方式的字节序列之间的映射. b) 为了兼容其它命名, ...
随机推荐
- Solr进行Distinct 获取Count
今天碰到一个问题,数据之前入solr的时候并没有计算条数,现在需要计算出某几个表中去重后的总数. 由于solr的ISearch并没有相关的Distinct功能.想到一个解决方案是用Solr的Facet ...
- 超文本传输协议http详解
HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...
- Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解
参考: http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/ 1.系统配置: 可以通过使用 map ...
- Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool
1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/de ...
- Git---时光穿梭机之版本回退02
现在你的本地仓库底下添加一个readme.txt文件 第一次readme.txt的内容如下:: Git is a version control systemGit is free sofwore 然 ...
- Liunx下如何使用kettle
在windows下完成所有操作, 把xxx.ktr上传到liunx, Pan.sh xxx.ktr 就完成了
- 优化 resolv.conf
DNS lookup 在把域名解析成 IP 过程中耽误了不少时间,尤其是访问比较复杂的网站的时候,比如某个页面包含多个 url,一次请求需要做多次 DNS 解析,并且从用户浏览器到 DNS serve ...
- ubuntu开机执行指令或脚本
vi /etc/rc.d/rc.localz 将指令添加到exit 0之前,保存.
- 布局xml文件不能预览
原因:xml文件里,有一些值没有设置属性. 如: <LinearLayout android:layout_width="fill_ ...
- 共享keychain数据
[共享keychain数据] 当往keychain中插入数据时,默认的 kSecAttrAccessGroup 就是App自身的BundleID. [官方文档] You can add a keych ...