本帖最后由 黄鸿达 于 2013-3-3 21:39 编辑
吴硕 发表于 2013-3-3 16:52
第二个确实是Unicode编码,原因如下:
Java中所有的字符、字符串都是Unicode编码,字符读取流读取出来的数 ... - System.out.println("-----------------------------------");
-
- InputStreamReader isr=new InputStreamReader(
- new FileInputStream("D:\\11.txt"),"GBK");
- OutputStreamWriter osw=new OutputStreamWriter(
- new FileOutputStream("D:\\22.txt"),"GBK");
- int num1=0;
- while((num1=isr.read())!=-1){
- System.out.println("整数"+num1);
- System.out.println("二进制"+Integer.toBinaryString(num1));
- osw.write(num1);
-
- }
- System.out.println("-----------------------------------");
-
- InputStreamReader isr1=new InputStreamReader(
- new FileInputStream("D:\\44.txt"),"UTF-8");
- OutputStreamWriter osw1=new OutputStreamWriter(
- new FileOutputStream("D:\\55.txt"),"UTF-8");
-
-
- int num11=0;
- while((num11=isr1.read())!=-1){
- System.out.println("整数"+num11);
- System.out.println("二进制"+Integer.toBinaryString(num11));
- osw1.write(num11);
-
- }
-
- System.out.println("-----------------------------------");
-
- InputStreamReader isr2=new InputStreamReader(
- new FileInputStream("D:\\66.txt"),"Unicode");
- OutputStreamWriter osw2=new OutputStreamWriter(
- new FileOutputStream("D:\\77.txt"),"Unicode");
-
-
- int num12=0;
- while((num12=isr2.read())!=-1){
- System.out.println("整数"+num12);
- System.out.println("二进制"+Integer.toBinaryString(num12));
- osw2.write(num12);
复制代码 嗯,通过这个可以知道得到的是UNICODE,因为都说JAVA内部char String 都是unicode保存的嘛,api文档中char 数据类型(和 Character 对象封装的值)基于原始的 Unicode 规范,将字符定义为固定宽度的 16 位实体,String 表示一个 UTF-16 格式的字符串。
但是我又不知道他怎么查的表,除了第一个流是直接取出那个原始字节,第二个包括我后面加的流,都是用指定编码读取然后转化成相同的内部字符,拿个“阿”来说,得到的都是38463,对应10110000 10100010。说他是UNICODE码,但是你用,比如String s="阿" 把s.getByte(“unicode”)又得不出10110000 10100010这个来哦。所以我不知道他查表,得出这个38463的 |