out.write(s.getBytes("ISO-8859-1"));
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)嵐皋,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
這條語句是說,將s按照ISO-8859-1編碼的方式進行編碼轉(zhuǎn)換,而ISO-8859-1編碼是單字節(jié)拉丁字符編碼(即ASCII編碼),會把雙字節(jié)的中文編碼轉(zhuǎn)換成單字節(jié),丟失了一個字節(jié),一般的轉(zhuǎn)換成了單字節(jié)后,該字節(jié)對應(yīng)的十六進制數(shù)是3F,該數(shù)對應(yīng)ASCII編碼的?所以,結(jié)果是一串問號;其實,你在把數(shù)據(jù)寫入到文件,已經(jīng)發(fā)生了丟失了數(shù)據(jù)!所以最后是亂碼??!
現(xiàn)在解釋為什么123正常顯示,字符串在java中是以Unicode編碼方式進行編碼的,該編碼方式占2個字節(jié),對于123這3個字符,其實也占有了6個字節(jié),在進行編碼轉(zhuǎn)換的過程中,也丟失了一個字節(jié),丟失的是高字節(jié),保留了低字節(jié),同時Unicode編碼是兼容ASCII碼的,所以可以認為沒有發(fā)生字節(jié)丟失,讀取的時候,只要是以兼容ASCII碼的編碼方式讀取,基本上不會出現(xiàn)亂碼!
如有不清楚地方,歡迎繼續(xù)追問??!
將文件打開。另存為,然后下面會出現(xiàn)一個編碼格式,自己選擇GB2312即可,不過記事本方式是沒gb2312的,找個EditPlus或者其他的文本工具,里面就有GB2312
可以選擇,或者在myeclipse里面右鍵文件,點最底下的選擇進去也有一個更換格式的,不過更換了中文會亂碼得重新寫
//輸出XML流
private void outputXML() throws DTreeException {
DOMSource domSource = new DOMSource (doc);
StreamResult streamResult = new StreamResult(this.out);
try {
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
Properties properties = transformer.getOutputProperties();
properties.setProperty(OutputKeys.ENCODING, "gb2312 ");
properties.setProperty(OutputKeys.VERSION, "1.0 ");
transformer.setOutputProperties(properties);
transformer.transform(domSource,streamResult);
}
catch (TransformerConfigurationException tce) {
tce.printStackTrace();
throw new DTreeException( "TransformerConfigure Exception: "+tce.getMessage());
}
catch (TransformerException te) {
te.printStackTrace ();
throw new DTreeException( "Transformer Exception: "+te.getMessage());
}
}
可以通過“FileOutputStream”(此時指定編碼格式即可)創(chuàng)建文件實例,之后過“OutputStreamWriter”流的形式進行存儲,舉例:
OutputStreamWriter
pw
=
null;//定義一個流
pw
=
new
OutputStreamWriter(new
FileOutputStream(“D:/test.txt”),"GBK");//確認流的輸出文件和編碼格式,此過程創(chuàng)建了“test.txt”實例
pw.write("我是要寫入到記事本文件的內(nèi)容");//將要寫入文件的內(nèi)容,可以多次write
pw.close();//關(guān)閉流
備注:文件流用完之后必須及時通過close方法關(guān)閉,否則會一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負擔。
要讓一個
Java
源文件打開時編碼格式為
UTF-8,需要做2件事情:
1)設(shè)置Java
源文件的默認編碼格式為UTF-8;
2)設(shè)置workspace的編碼格式為UTF-8。
相應(yīng)設(shè)置如下:
設(shè)置
Java
源文件的默認編碼格式為
UTF-8
在
Windows-Preference
頁面中,選擇
General-Content
Types
在右邊的框中,選擇
Text-Java
Source
File,將下面的
Default
Encoding
改為
UTF-8
設(shè)置
workspace
的編碼格式為
UTF-8
在
Windows-Preference
頁面中,選擇
General-WorkSpace
選擇右側(cè)框中的
Text
File
encoding,改為
UTF-8
設(shè)置完這2處,默認打開
Java
源文件就是UTF-8編碼了。