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