dataoutputstream亂碼, dataoutputstream出現(xiàn)亂碼的原因是什么?不知道小伙伴們今天來看看邊肖的分享吧!
Causes of garbled data output stream:
Java運(yùn)行時環(huán)境(JRE)分為英文版和國際版。只有國際版支持非英語字符。如果計算機(jī)上安裝了英文版,Java開發(fā)工具包(JDK)支持多語言字符。但是,如果沒有安裝JDK,直接使用壓縮包會出現(xiàn)亂碼。
注意:“Java源代碼-Java字節(jié)碼”,標(biāo)準(zhǔn)Java編譯器javac使用的字符集是系統(tǒng)默認(rèn)的字符集。
比如中文Windows操作系統(tǒng)上是GBK,Linux操作系統(tǒng)上是ISO-8859-1,那么Linux操作系統(tǒng)上開發(fā)者編譯的類的源文件中的漢字就存在問題。
解決方法是在編譯時添加編碼參數(shù),這樣就可以獨(dú)立于平臺。用法是javac編碼GBK。
dataoutputstream亂碼的解決方案;
使用FileOutputStream序列化,可以將文本內(nèi)容直接寫入文件,代碼如下:
FileOutputStream outStream=new FileOutputStream(file);
outStream.write(str.getBytes());
outStream.close();
但是如果這里的字符串包含中文,就會亂碼。這是因?yàn)镕ileOutputStream是字節(jié)流,文本是按字節(jié)寫入文件的,而一個漢字是兩個字節(jié)。如果不能一次寫完,就會亂碼。
解決方案是使用OutputStreamWriter將字節(jié)流轉(zhuǎn)換為字符流,并指定utf-8編碼。代碼如下:
OutputStreamWriter oStreamWriter=new OutputStreamWriter(new FileOutputStream(file), utf-8);
oStreamWriter.append(str);
oStreamWriter.close();
擴(kuò)展信息:
Java
Java是一種面向?qū)ο蟮木幊陶Z言,它既吸收了C語言的優(yōu)點(diǎn),又摒棄了C語言中難以理解的多重繼承和指針等概念,所以Java語言有兩個特點(diǎn):功能強(qiáng)大和使用簡單。
Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,完美地實(shí)現(xiàn)了面向?qū)ο罄碚?,讓程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。
Java具有簡單性、面向?qū)ο?、分布式、健壯性、安全性、平臺獨(dú)立性和可移植性、多線程和動態(tài)性等特點(diǎn)。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。
dataoutputstream亂碼,以上就是本文為您收集整理的dataoutputstream亂碼最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。