关于编码的问题

来源:3-1 RandomAccessFile基本操作

慕前端1178442

2016-11-15 08:46

该代码中,已经把“中”以gbk的方式进行存储,而后又以gbk编码的形式将其读取,为什么还会出现乱码?

写回答 关注

10回答

  • chrealcool
    2016-12-05 16:11:39

    txt文本的编码是ansi,虽然你写入时设置了gbk(txt文件中可以正常显示)但是控制台输出的编码是utf-8和ansi不相符合,所以出现乱码。个人意见,还请指正.

  • 学习的脚步不能停
    2016-11-18 02:56:39


    pppp

  • 学习的脚步不能停
    2016-11-18 02:54:09

    oo o lo o
    oo oo
    oo
    l

  • 学习的脚步不能停
    2016-11-18 02:52:43

    oolo

  • 学习的脚步不能停
    2016-11-18 02:50:52

    o

    lo

  • 学习的脚步不能停
    2016-11-18 02:46:54

    ooo o

  • 呆萌的小宝
    2016-11-16 16:59:26

    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.Arrays;
    public class RafDome {

     public static void main(String[] args) throws IOException {
      File demo  = new File("demo");
      if(!demo.exists()){
       demo.mkdir();
      }
      File file =new File(demo,"ra.dat");
      if(!file.exists()){
       file.createNewFile();
      }  
      RandomAccessFile raf =new RandomAccessFile(file,"rw");
      System.out.println(raf.getFilePointer());


      String s="AB123456中国人民政府";
      byte[]  buf =s.getBytes("gbk");
      System.out.println(buf.length);
      raf.write(buf.length);
      raf.write(buf);
      
      raf.seek(0);
      
      byte [] bu  =new byte[(int)raf.read()];  
      raf.read(bu);
      String  str= new  String(bu,"gbk");
      System.out.println(str);
      raf.close();
     }
    }

    //这里我写了一个批量写入和读取


  • 慕前端1178442
    2016-11-16 10:58:38
    public class RandomAccessFileTest {
    	public static void main(String[] args)throws IOException {
    		File file1=new File("demo");
    		if(!file1.exists())
    			file1.mkdir();
    		File file2=new File(file1,"a.txt");
    		if(!file2.exists())
    			file2.createNewFile();
    		RandomAccessFile raf = new RandomAccessFile(file2, "rw");
    		//指针的位置
    		System.out.println(raf.getFilePointer());
    		raf.write('a');//只写一个字节
    		System.out.println(raf.getFilePointer());
    		raf.write('b');
    		System.out.println(raf.getFilePointer());
    		int i=0x7fffffff;
    		raf.write(i>>>24);//写入后八位
    		System.out.println(raf.getFilePointer());
    
    		raf.write(i>>>16);
    		System.out.println(raf.getFilePointer());
    		
    		raf.write(i>>>8);
    		System.out.println(raf.getFilePointer());
    
    		raf.write(i);
    		System.out.println(raf.getFilePointer());
    
    		raf.writeInt(i);
    		System.out.println(raf.getFilePointer());
    		
    		String string="中";
    		byte[] byte1=string.getBytes("gbk");
    		raf.write(byte1);//汉字在gbk编码中占两个字节
    		System.out.println(raf.getFilePointer());
    		System.out.println("显示该文件的字节总长度:"+raf.length());
    
    		
    		//进行读取操作,一次性将所有内容读取出来
    		raf.seek(0);//将指针的指向移动到开头
    		byte[] byte3=new byte[(int)raf.length()];
    		raf.read(byte3);//将文件的内容读到字节数组中
    		System.out.println(Arrays.toString(byte3));
    		String string3=new String(byte3,"gbk");
    		System.out.println(string3);
    		}
    	}


  • 呆萌的小宝
    2016-11-15 14:52:31

    把代码粘上来

    慕前端117... 回复呆萌的小宝

    我刚刚照着你的方法试了试,还是乱码...

    2016-11-16 17:30:36

    共 4 条回复 >

  • 九七
    2016-11-15 13:22:54

    发源码来看看,照你直接说的意思应该是没有问题的

    慕前端117...

    我的代码发在下边了

    2016-11-16 11:00:16

    共 1 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题