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) 为了兼容其它命名, ...
随机推荐
- 用Msxml2.XMLHTTP 与 Msxml2.ServerXMLHTTP 发生网页请求
发送 HTTP 请求时,首先想到的一般是 Msxml2.XMLHTTP(Microsoft.XMLHTTP 已经不提倡使用了). ServerXMLHTTP 为不同 Web 服务器之间的服务器安全 H ...
- Xcode 中设置部分文件ARC支持
ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting).简单地说,就是代码中自动加入了retain/release,原先需要手动添加的 ...
- JAVA 获取文件的MD5值大小以及常见的工具类
/** * 获取文件的MD5值大小 * * @param file * 文件对象 * @return */ public static String getMD5(File file) { FileI ...
- less gradient-vertical 方法的实现
// Vertical gradient using CSS where possible, and base64-encoded SVG for IE9 (enables use of this i ...
- 前端开发之jQuery效果篇
主要内容: 1.显示与隐藏效果 2.滑动效果 3.淡入与淡出效果 4.动画效果 5.弹出广告效果 一.显示与隐藏 显示与隐藏即 show() 和 hide() ,能够控制元素显示或隐藏. 实例: &l ...
- jquery.validate ajax方式验证
在做网站的时候有一块需要用到jquery.validate插件 ajax方式的方式来验证原始密码是否正确,研究了研究加上博客园朋友的帮助,终于实现了.贴出代码 <script type=&quo ...
- Centos7手动编译安装Python3
Python3的安装方式非常的简单,首先去到Python下载目录下载想要的Python包,这里我选择了3.6.5版本 $ wget https://www.python.org/ftp/python/ ...
- 44. Wildcard Matching (String; DP, Back-Track)
Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...
- js 倒计时功能,获取当前时间的年月日,时分秒
一.实现当前时间到指定截止时间的倒计时功能 <html> <head> <title>TEST</title> </head> <bo ...
- CentOS7防火墙firewall相关操作
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...