文件的编码
来源:互联网 发布:游民星空mac游戏 编辑:程序博客网 时间:2024/04/30 11:28
新建3个txt文件,内容分别为联通、联想、联,再次分别打开三个文件,会发现联通、联乱码,联想没有乱码。诡异!
package com.imooc.io;import java.io.UnsupportedEncodingException;public class EncodeDemo {public static void main(String[] args) throws UnsupportedEncodingException {String str = "李程lch";byte[] bytes1 = str.getBytes(); // 转换成字节序列用的是项目默认的编码utf-8for (byte b : bytes1) {// 把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b & 0xff) + " ");}// 结论:utf-8编码中文占用3个字节,英文占用1个字节System.out.println();byte[] bytes2 = str.getBytes("gbk"); // 转换成字节序列将编码设置为gbkfor (byte b : bytes2) {// 把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b & 0xff) + " ");}// 结论:gbk编码中文占用2个字节,英文占用1个字节System.out.println();// java是双字节编码utf-16bebyte[] bytes3 = str.getBytes("utf-16be"); // 转换成字节序列将编码设置为utf-16befor (byte b : bytes3) {// 把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b & 0xff) + " ");}// 结论:utf-16be编码中文和英文君占用2个字节System.out.println();/* * 当你的字节序列式某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 */String str1 = new String(bytes3); // 用项目默认编码utf-8System.out.println(str1); // 乱码String str2 = new String(bytes3,"utf-16be"); // 使用序列化时的编码System.out.println(str2); // 正常String str3 = new String(bytes3,"gbk"); // 使用序列化时的编码System.out.println(str3); // 乱码/* * 文本文件 就是字节序列 * 可以使任意编码 * 如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码 * 联通、联这是一种巧合,他们正好符合了utf-8编码的规则。 */}}
运行结果:
0 0
- 文件的编码问题
- netbeans的文件编码
- 判断文件的编码
- 文件的编码
- 获取文件的编码
- 判断文件的编码
- TXT的文件编码
- 网页文件的编码
- 文件的编码
- 文件的编码
- 文件的编码
- JAVA 文件的编码
- 关于文件的编码
- 文件的编码
- 文件的编码方式
- 文件的编码
- 文件的编码格式
- linux下的文件编码,vim编码
- sbt/sbt assembly 编译spark源码出错问题解决方法
- hdoj problem 1233 还是畅通工程(并查集+动态规划)
- 顺序栈的验证实验
- opencv中文网
- centos下正确设置DNS的方法
- 文件的编码
- HTTP协议详解
- laravel的安装与配置
- openfire Android 安装与配置(二)
- STM32 FreeRTOS 关键API功能简介(1)
- 类与继承
- HTTP 返回代码表
- 可恶的CS0433
- JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1