文字编码(文件IO流 )
2015-08-29 19:20
211 查看
String s="中文ABC";
byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是项目默认的编码
for(byte b: bytes1)
System.out.println(Integer.toHexString(b & 0xff)+" ");// & 0xff是为了把前面的24个0去掉只留下后八位
//toHexString这个函数是把字节(转换成了Int)以16进制的方式显示
byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码
gbk编码: 中文占用两个字节,英文占用一个字节
utf-8编码:中文占用三个字节,英文占用一个字节
java是双字节编码,是utf-16be编码
utf-16be编码:中文占用两个字节,英文占用两个字节
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码
String str1=new String(bytes4);//这时会使用项目默认的编码来转换,可能出现乱码
要使用字节序列的编码来进行转换
String str2=new String(bytes4,"utf-16be");
文本文件就是字节序列,可以是任意编码的字节序列
如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)
byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是项目默认的编码
for(byte b: bytes1)
System.out.println(Integer.toHexString(b & 0xff)+" ");// & 0xff是为了把前面的24个0去掉只留下后八位
//toHexString这个函数是把字节(转换成了Int)以16进制的方式显示
byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码
gbk编码: 中文占用两个字节,英文占用一个字节
utf-8编码:中文占用三个字节,英文占用一个字节
java是双字节编码,是utf-16be编码
utf-16be编码:中文占用两个字节,英文占用两个字节
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码
String str1=new String(bytes4);//这时会使用项目默认的编码来转换,可能出现乱码
要使用字节序列的编码来进行转换
String str2=new String(bytes4,"utf-16be");
文本文件就是字节序列,可以是任意编码的字节序列
如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)
相关文章推荐
- 破解手机"私密相册"app的密码 wpjpg格式图片
- Swift Object-c 相互调用
- 随想录(高质量代码开发)
- 2015-08-04个人定制(nodejs中的循环陷阱)
- PHP namespace的定义
- 基于HBase做Storm 实时计算指标存储――速记版
- 【C/C++】运算符问题
- 作业《IOS_C语言》结构体、结构体数组
- awr中"PHYSICAL_MEMORY_BYTES"显示的内存是当前可用的物理内存
- Dhaka2014 I Volume of Revolution (积分求体积)
- 序列化之Serialize
- 20150730bootstrap
- Java基础知识强化05:不借助第三个变量实现两个变量互换
- ZOJ3816--Generalized Palindromic Number(DFS)
- UITabBarItem 只有图片,没有文字,图片居中
- 基于Java自带同步机制实现生产者-消费者模式
- Delphi 指针大全(光看不练是学不会的)
- 20150721搭建环境
- 混杂设备驱动模型
- 懒人必备之Android效率开发框架(伪原创)