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) 为了兼容其它命名, ...
随机推荐
- 接口自动化(二)--操作Excel获取需要数据
这一部分的内容记述一下对Excel表格的操作,本实战中的测试用例是由Excel来管理的,因此操作Excel是重要的一部分. 再次贴出这张图,所有的测试用例都在这个sheet内,请求数据真实存放在jso ...
- leetcode434
public class Solution { public int CountSegments(string s) { s = s.Trim(); ) { ; } else { ; ; ; i &l ...
- Spring Boot自动配置
Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...
- Liunx cannot remove `xxx': Operation not permitted
链接: http://mangocool.com/detail_1_1439515930283.html 解到原来文件还可以设置隐藏权限,就是这个chattr设置,下面我们来看看这个命令的详解. [r ...
- 12 MySQL--内置功能介绍
mysql内置功能: 1.视图 2.触发器 3.存储过程 4.事务 5.函数 6.函数流程控制 一.视图 介绍: 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名] ...
- 学习 TCP 三次握手和四次挥手
TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地 ...
- xcode编译提示Permission denied
编译第三方XCode插件时,提示没有文件操作权限(Permission denied) 使用命令行,修改Xcode目录当前用户操作权限: sudo chmod -R 777 /Users/当前的用户名 ...
- [Laravel] mac下通过 homestead 搭建环境 到运行项目
seven_Android 关注 2017.07.03 21:33* 字数 2240 阅读 3464评论 10喜欢 9 之前学习过一段时间的 Laravel ,换 mac 后一直没空做相关的事情,而且 ...
- Markdown 手册
前言(可以不看) 最开始只是想写一篇博文,准备使用markdown,感觉很流行(github.简书……很多都支持),而且渲染出来很好看,一直很想学,没有合适的机会,结果拖到了现在.比起什么python ...
- iOS7中的多任务I
[改变了后台任务的运行方式] 在iOS6和之前的系统中,系统在用户退出应用后,如果应用正在执行后台任务的话,系统会保持活跃状态直到后台任务完成或者是超时以后,才会进入真正的低功耗休眠状态. 而在iOS ...