字节序的编码问题——乱码是怎样产生的
来源:互联网 发布:更新软件下载 编辑:程序博客网 时间:2024/06/07 19:26
一 代码
package com.imooc.io;public class EncodeDemo {/** * @param args */public static void main(String[] args)throws Exception {// TODO Auto-generated method stubString s="慕课ABC";//转换为字节序列,用的是项目默认的编码gbkbyte[] bytes1 = s.getBytes();for(byte b:bytes1){//把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b&0xff)+" ");}System.out.println();byte[] bytes2=s.getBytes("gbk");//gbk编码中文占用2个字节,英文占用1个字节for(byte b:bytes2){//把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b&0xff)+" ");}System.out.println();byte[] bytes3=s.getBytes("utf-8");//utf-8编码中文占用3个字节,英文占用1个字节for(byte b:bytes3){//把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b&0xff)+" ");}System.out.println();byte[] bytes4=s.getBytes("utf-16be");//Java是双字节编码 utf-16be//utf-16be 中文占用2个字节,英文占用2个字节for(byte b:bytes4){//把字节(转换成了int)以16进制的方式显示System.out.print(Integer.toHexString(b&0xff)+" ");}/* * 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 * */System.out.println();String str1 = new String(bytes4); //用项目默认的编码,会出现乱码System.out.println(str1);String str2 = new String(bytes4,"utf-16be"); System.out.println(str2);/* * 文本文件就是字节序列 * 可以是任意编码的字节序列 * 如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码 * */}}
二 运行结果
三 项目默认编码是gbK
四 小结
gbk编码中文占用2个字节,英文占用1个字节。
utf-8编码中文占用3个字节,英文占用1个字节
utf-16be 中文占用2个字节,英文占用2个字节
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码
文本文件就是字节序列
可以是任意编码的字节序列
如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码
阅读全文
0 0
- 字节序的编码问题——乱码是怎样产生的
- 字符,字节和编码(乱码的产生)
- 深入分析 Java 中的中文编码问题——乱码是如何产生的
- 乱码是怎样形成的?编码和解码的规则
- 疼痛是怎样产生的?
- 乱码是怎样形成的
- 创业的Idea是怎样产生的?
- 创业的Idea是怎样产生的?
- 创业的Idea是怎样产生的
- Cookie注入是怎样产生的
- 次贷危机是怎样产生的
- Cookie注入是怎样产生的
- Cookie注入是怎样产生的
- Cookie注入是怎样产生的
- Cookie注入是怎样产生的
- 内存碎片是怎样产生的
- 引力波是怎样产生的?
- Bug是怎样产生的之我见
- uva 455
- JNDI实例说明
- Java学习新得
- leetcode题解-138. Copy List with Random Pointer
- python中ndarray与dataframe互转
- 字节序的编码问题——乱码是怎样产生的
- MySQL几种数据类型精度和标度的情况
- JS
- Win 查看系统进程中是否已存在某个程序
- ETL增量抽取方法
- 杭电acmP2022 海选女主角
- 程序员面试宝典随笔记(一)---线程和进程1,-基础信息
- latex常用的基本操作
- git教程