java字节流处理汉字
来源:互联网 发布:快手直播配音软件 编辑:程序博客网 时间:2024/05/21 18:45
今天在学习字节流读取数据,发现返回的是int类型(具体原因可以百度,挺简单的),发现这种情况下是读不了汉字的,但是又转念一想,汉字无非就是两个字节,读两次,然后自己处理一下,未尝不可,于是就产生了这篇博客。
刚开始,总是不成功,后来,想到可能是记事本编码问题的原因,改记事本文件编码格式为unicode,再次运行程序。
先贴一下代码:
public class FileputStream {public static void main(String[] args) throws Exception {File file = new File("d:/a/e.txt");FileInputStream in = new FileInputStream(file);char ch = '一';System.out.println("汉字:"+(int)ch);fun((int)ch);ch = '二';System.out.println("汉字:"+(int)ch);fun((int)ch);int temp;while((temp=in.read())!=-1){System.out.println("字节"+temp);fun(temp);}in.close();}static void fun(int x){while(x>0){System.out.print(x % 2);x = x/2;}System.out.println("\n");}}运行结果:
汉字:19968
000000000111001
汉字:20108
001100010111001
字节255
11111111
字节254
01111111
字节0
字节78
0111001
字节140
00110001
字节78
0111001
可见,除了开头有两个标志性的字节,后面的内容已经读了出来,现在就该把读出来的字节处理一下,转成char类型。(记事本里面的内容为“一二”)
代码如下:
public class FileputStream {public static void main(String[] args) throws Exception {File file = new File("d:/a/e.txt");FileInputStream in = new FileInputStream(file);int temp1;int temp2;in.skip(2);while((temp1=in.read())!=-1 & (temp2=in.read())!=-1){temp1 = (temp2<<8) + temp1;System.out.println((char)temp1);}in.close();}}运行结果为:
一
二
总结:最关键的一点是,一定要把txt文件改成unicode编码格式,不过这样会造成前面多两个无用的字节(对,这两个字节就是因为unicode编码格式才会出来的,其他的编码格式不清楚,反正anis编码格式是不会出现这种情况的)。
阅读全文
0 0
- java字节流处理汉字
- java汉字占用字节
- java 字节流的处理
- java 字节流的处理
- java字节流对汉字输出为乱码的问题
- JAVA处理汉字
- JAVA处理汉字
- Java汉字处理
- Java中字节流和异常处理
- Java bit、byte、位、字节、汉字、字符
- 【java】位、字节、汉字、字符的关系
- java一个汉字占几个字节问题
- Java bit、byte、位、字节、汉字、字符
- 汉字占多个字节,若按指定字节长度截取字符串,如何处理1/3个汉字?
- java中一个汉字和一个字母所占内存字节比较以及后台验证的减半处理
- java 汉字拼音处理类
- java汉字解析拼音处理
- Flex 处理双字节字符(判断汉字长度)的方法
- 【网络基础 六】应用层
- 败者树多路排序
- OpenStack之安装glance
- SpringMVC @RequestBody
- Centos编译安装配置Heartbeat-2.1.4
- java字节流处理汉字
- Qt视图模型(model/view)心得
- 开源安全问题不容忽视
- Hibernate缓存机制浅述
- <3> 单链表的各种操作(创建、增加、删除、修改、查找、逆序、判空、置空等)
- 无需插件用Chrome调试WebView加载的网页
- nova的rebuild的log
- web项目:漏洞修复(2)_tomcat配置
- 求职之路