課程
/后端開發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
該代碼中,已經(jīng)把“中”以gbk的方式進(jìn)行存儲,而后又以gbk編碼的形式將其讀取,為什么還會出現(xiàn)亂碼?
2016-11-15
源自:文件傳輸基礎(chǔ)——Java IO流 3-1
正在回答
txt文本的編碼是ansi,雖然你寫入時設(shè)置了gbk(txt文件中可以正常顯示)但是控制臺輸出的編碼是utf-8和ansi不相符合,所以出現(xiàn)亂碼。個人意見,還請指正.
pppp
oo?o?lo?ooo?ooool
oolo
olo
ooo?o
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();?}}
//這里我寫了一個批量寫入和讀取
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');//只寫一個字節(jié) 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編碼中占兩個字節(jié) System.out.println(raf.getFilePointer()); System.out.println("顯示該文件的字節(jié)總長度:"+raf.length()); //進(jìn)行讀取操作,一次性將所有內(nèi)容讀取出來 raf.seek(0);//將指針的指向移動到開頭 byte[]?byte3=new?byte[(int)raf.length()]; raf.read(byte3);//將文件的內(nèi)容讀到字節(jié)數(shù)組中 System.out.println(Arrays.toString(byte3)); String?string3=new?String(byte3,"gbk"); System.out.println(string3); } }
把代碼粘上來
慕前端1178442 提問者
呆萌的小寶
慕前端1178442 提問者 回復(fù) 呆萌的小寶
發(fā)源碼來看看,照你直接說的意思應(yīng)該是沒有問題的
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內(nèi)容
1 回答關(guān)于編碼的問題
4 回答關(guān)于IO編碼
3 回答關(guān)于亂碼的寫入的問題
2 回答編碼問題
1 回答編碼問題。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-12-05
txt文本的編碼是ansi,雖然你寫入時設(shè)置了gbk(txt文件中可以正常顯示)但是控制臺輸出的編碼是utf-8和ansi不相符合,所以出現(xiàn)亂碼。個人意見,還請指正.
2016-11-18
pppp
2016-11-18
oo?o?lo?o
oo?oo
oo
l
2016-11-18
oolo
2016-11-18
o
lo
2016-11-18
ooo?o
2016-11-16
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();
?}
}
//這里我寫了一個批量寫入和讀取
2016-11-16
2016-11-15
把代碼粘上來
2016-11-15
發(fā)源碼來看看,照你直接說的意思應(yīng)該是沒有問題的