<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    沒(méi)有眼淚
    Don't Cry!
    posts - 13,comments - 44,trackbacks - 0

    工作中經(jīng)常遇到java編碼問(wèn)題,由于缺乏研究,總是無(wú)法給出確切的答案,這個(gè)周末在網(wǎng)上查了一些資料,在此做些匯總。

        問(wèn)題一:在java中讀取文件時(shí)應(yīng)該采用什么編碼?

    Java讀取文件的方式總體可以分為兩類:按字節(jié)讀取和按字符讀取。按字節(jié)讀取就是采用InputStream.read()方法來(lái)讀取字節(jié),然后保存到一個(gè)byte[]數(shù)組中,最后經(jīng)常用new String(byte[]);把字節(jié)數(shù)組轉(zhuǎn)換成String。在最后一步隱藏了一個(gè)編碼的細(xì)節(jié),new String(byte[]);會(huì)使用操作系統(tǒng)默認(rèn)的字符集來(lái)解碼字節(jié)數(shù)組,中文操作系統(tǒng)就是GBK。而我們從輸入流里讀取的字節(jié)很可能就不是GBK編碼的,因?yàn)閺妮斎肓骼镒x取的字節(jié)編碼取決于被讀取的文件自身的編碼。舉個(gè)例子:我們?cè)?/span>D:盤新建一個(gè)名為demo.txt的文件,寫入我們。,并保存。此時(shí)demo.txt編碼是ANSI,中文操作系統(tǒng)下就是GBK。此時(shí)我們用輸入字節(jié)流讀取該文件所得到的字節(jié)就是使用GBK方式編碼的字節(jié)。那么我們最終new String(byte[]);時(shí)采用平臺(tái)默認(rèn)的GBK來(lái)編碼成String也是沒(méi)有問(wèn)題的(字節(jié)編碼和默認(rèn)解碼一致)。試想一下,如果在保存demo.txt文件時(shí),我們選擇UTF-8編碼,那么該文件的編碼就不在是ANSI了,而變成了UTF-8。仍然采用輸入字節(jié)流來(lái)讀取,那么此時(shí)讀取的字節(jié)和上一次就不一樣了,這次的字節(jié)是UTF-8編碼的字節(jié)。兩次的字節(jié)顯然不一樣,一個(gè)很明顯的區(qū)別就是:GBK每個(gè)漢字兩個(gè)字節(jié),而UTF-8每個(gè)漢字三個(gè)字節(jié)。如何我們最后還使用new String(byte[]);來(lái)構(gòu)造String對(duì)象,則會(huì)出現(xiàn)亂碼,原因很簡(jiǎn)單,因?yàn)闃?gòu)造時(shí)采用的默認(rèn)解碼GBK,而我們的字節(jié)是UTF-8字節(jié)。正確的辦法就是使用new String(byte[],”UTF-8”);來(lái)構(gòu)造String對(duì)象。此時(shí)我們的字節(jié)編碼和構(gòu)造使用的解碼是一致的,不會(huì)出現(xiàn)亂碼問(wèn)題了。

     

    說(shuō)完字節(jié)輸入流,再來(lái)說(shuō)說(shuō)字節(jié)輸出流。

    我們知道如果采用字節(jié)輸出流把字節(jié)輸出到某個(gè)文件,我們是無(wú)法指定生成文件的編碼的(假設(shè)文件以前不存在),那么生成的文件是什么編碼的呢?經(jīng)過(guò)測(cè)試發(fā)現(xiàn),其實(shí)這取決于寫入的字節(jié)編碼格式。比如以下代碼:

    OutputStream out = new FileOutputStream("d:\\demo.txt");

    out.write("我們".getBytes());

    getBytes()會(huì)采用操作系統(tǒng)默認(rèn)的字符集來(lái)編碼字節(jié),這里就是GBK,所以我們寫入demo.txt文件的是GBK編碼的字節(jié)。那么這個(gè)文件的編碼就是GBK。如果稍微修改一下程序:out.write("我們".getBytes(“UTF-8”));此時(shí)我們寫入的字節(jié)就是UTF-8的,那么demo.txt文件編碼就是UTF-8。這里還有一點(diǎn),如果把我們換成123abc之類的ascii碼字符,那么無(wú)論是采用getBytes()或者getBytes(“UTF-8”)那么生成的文件都將是GBK編碼的。

    這里可以總結(jié)一下,InputStream中的字節(jié)編碼取決文件本身的編碼,而OutputStream生成文件的編碼取決于字節(jié)的編碼。

     

    下面說(shuō)說(shuō)采用字符輸入流來(lái)讀取文件。

    首先,我們需要理解一下字符流。其實(shí)字符流可以看做是一種包裝流,它的底層還是采用字節(jié)流來(lái)讀取字節(jié),然后它使用指定的編碼方式將讀取字節(jié)解碼為字符。說(shuō)起字符流,不得不提的就是InputStreamReader。以下是java api對(duì)它的說(shuō)明: InputStreamReader是字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,否則可能接受平臺(tái)默認(rèn)的字符集。說(shuō)到這里其實(shí)很明白了,InputStreamReader在底層還是采用字節(jié)流來(lái)讀取字節(jié),讀取字節(jié)后它需要一個(gè)編碼格式來(lái)解碼讀取的字節(jié),如果我們?cè)跇?gòu)造InputStreamReader沒(méi)有傳入編碼方式,那么會(huì)采用操作系統(tǒng)默認(rèn)的GBK來(lái)解碼讀取的字節(jié)。還用上面demo.txt的例子,假設(shè)demo.txt編碼方式為GBK,我們使用如下代碼來(lái)讀取文件:

    InputStreamReader  in = new InputStreamReader(new FileInputStream(“demo.txt”));

    那么我們讀取不會(huì)產(chǎn)生亂碼,因?yàn)槲募捎?/span>GBK編碼,所以讀出的字節(jié)也是GBK編碼的,而InputStreamReader默認(rèn)采用解碼也是GBK。如果把demo.txt編碼方式換成UTF-8,那么我們采用這種方式讀取就會(huì)產(chǎn)生亂碼。這是因?yàn)樽止?jié)編碼(UTF-8)和我們的解碼編碼(GBK)造成的。解決辦法如下:

    InputStreamReader  in = new InputStreamReader(new FileInputStream(“demo.txt”),”UTF-8”);

    InputStreamReader指定解碼編碼,這樣二者統(tǒng)一就不會(huì)出現(xiàn)亂碼了。

     

    下面說(shuō)說(shuō)字符輸出流。

    字符輸出流的原理和字符輸入流的原理一樣,也可以看做是包裝流,其底層還是采用字節(jié)輸出流來(lái)寫文件。只是字符輸出流根據(jù)指定的編碼將字符轉(zhuǎn)換為字節(jié)的。字符輸出流的主要類是:OutputStreamWriterJava api解釋如下:OutputStreamWriter 是字符流通向字節(jié)流的橋梁:使用指定的 charset 將要向其寫入的字符編碼為字節(jié)。它使用的字符集可以由名稱指定或顯式給定,否則可能接受平臺(tái)默認(rèn)的字符集。說(shuō)的很明白了,它需要一個(gè)編碼將寫入的字符轉(zhuǎn)換為字節(jié),如果沒(méi)有指定則采用GBK編碼,那么輸出的字節(jié)都將是GBK編碼,生成的文件也是GBK編碼的。如果采用以下方式構(gòu)造OutputStreamWriter

    OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(“dd.txt”),”UTF-8”);

    那么寫入的字符將被編碼為UTF-8的字節(jié),生成的文件也將是UTF-8格式的。

       

    問(wèn)題二: 既然讀文件要使用和文件編碼一致的編碼,那么javac編譯文件也需要讀取文件,它使用什么編碼呢?

           這個(gè)問(wèn)題從來(lái)就沒(méi)想過(guò),也從沒(méi)當(dāng)做是什么問(wèn)題。正是因?yàn)閱?wèn)題一而引發(fā)的思考,其實(shí)這里還是有東西可以挖掘的。下面分三種情況來(lái)探討,這三種情況也是我們常用的編譯java源文件的方法。

           1.javac在控制臺(tái)編譯java類文件。

           通常我們手動(dòng)建立一個(gè)java文件Demo.java,并保存。此時(shí)Demo.java文件的編碼為ANSI,中文操作系統(tǒng)下就是GBK.然后使用javac命令來(lái)編譯該源文件。”javac Demo.java”Javac也需要讀取java文件,那么javac是使用什么編碼來(lái)解碼我們讀取的字節(jié)呢?其實(shí)javac采用了操作系統(tǒng)默認(rèn)的GBK編碼解碼我們讀取的字節(jié),這個(gè)編碼正好也是Demo.java文件的編碼,二者一致,所以不會(huì)出現(xiàn)亂碼情況。讓我們來(lái)做點(diǎn)手腳,在保存Demo.java文件時(shí),我們選擇UTF-8保存。此時(shí)Demo.java文件編碼就是UTF-8了。我們?cè)偈褂?/span>”javac Demo.java”來(lái)編譯,如果Demo.java里含有中文字符,此時(shí)控制臺(tái)會(huì)出現(xiàn)警告信息,也出現(xiàn)了亂碼。究其原因,就是因?yàn)?/span>javac采用了GBK編碼解碼我們讀取的字節(jié)。因?yàn)槲覀兊淖止?jié)是UTF-8編碼的,所以會(huì)出現(xiàn)亂碼。如果不信的話你可以自己試試。那么解決辦法呢?解決辦法就是使用javacencoding參數(shù)來(lái)制定我們的解碼編碼。如下:javac -encoding UTF-8 Demo.java這里我們指定了使用UTF-8來(lái)解碼讀取的字節(jié),由于這個(gè)編碼和Demo.java文件編碼一致,所以不會(huì)出現(xiàn)亂碼情況了。

     

           2.Eclipse中編譯java文件。

           我習(xí)慣把Eclipse的編碼設(shè)置成UTF-8。那么每個(gè)項(xiàng)目中的java源文件的編碼就是UTF-8。這樣編譯也從沒(méi)有問(wèn)題,也沒(méi)有出現(xiàn)過(guò)亂碼。正是因?yàn)檫@樣才掩蓋了使用javac可能出現(xiàn)的亂碼。那么Eclipse是如何正確編譯文件編碼為UTF-8java源文件的呢?唯一的解釋就是Eclipse自動(dòng)識(shí)別了我們java源文件的文件編碼,然后采取了正確的encoding參數(shù)來(lái)編譯我們的java源文件。功勞都?xì)w功于IDE的強(qiáng)大了。

          

           3.使用Ant來(lái)編譯java文件。

           Ant也是我常用的編譯java文件的工具。首先,必須知道Ant在后臺(tái)其實(shí)也是采用javac來(lái)編譯java源文件的,那么可想而知,1會(huì)出現(xiàn)的問(wèn)題在Ant中也會(huì)存在。如果我們使用Ant來(lái)編譯UTF-8編碼的java源文件,并且不指定如何編碼,那么也會(huì)出現(xiàn)亂碼的情況。所以Ant的編譯命令<javac>有一個(gè)屬性” encoding”允許我們指定編碼,如果我們要編譯源文件編碼為UTF-8java文件,那么我們的命令應(yīng)該如下:

           <javac destdir="${classes}" target="1.4" source="1.4" deprecation="off" debug="on" debuglevel="lines,vars,source" optimize="off" encoding="UTF-8">

           指定了編碼也就相當(dāng)于”javac –encoding”了,所以不會(huì)出現(xiàn)亂碼了。

     

    問(wèn)題三:tomcat中編譯jsp的情況。

           這個(gè)話題也是由問(wèn)題二引出的。既然javac編譯java源文件需要采用正確的編碼,那么tomcat編譯jsp時(shí)也要讀取文件,此時(shí)tomcat采用什么編碼來(lái)讀取文件?會(huì)出現(xiàn)亂碼情況嗎?下面我們來(lái)分析。

           我們通常會(huì)在jsp開(kāi)頭寫上如下代碼:

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

    我常常不寫pageEncoding這個(gè)屬于,也不明白它的作用,但是不寫也沒(méi)出現(xiàn)過(guò)亂碼情況。其實(shí)這個(gè)屬性就是告訴tomcat采用什么編碼來(lái)讀取jsp文件的。它應(yīng)該和jsp文件本身的編碼一致。比如我們新建個(gè)jsp文件,設(shè)置文件編碼為GBK,那么此時(shí)我們的pageEncoding應(yīng)該設(shè)置為GBK,這樣我們寫入文件的字符就是GBK編碼的,tomcat讀取文件時(shí)采用也是GBK編碼,所以能保證正確的解碼讀取的字節(jié)。不會(huì)出現(xiàn)亂碼。如果把pageEncoding設(shè)置為UTF-8,那么讀取jsp文件過(guò)程中轉(zhuǎn)碼就出現(xiàn)了亂碼。上面說(shuō)我常常不寫pageEncoding這個(gè)屬性,但是也沒(méi)出現(xiàn)過(guò)亂碼,這是怎么回事呢?那是因?yàn)槿绻麤](méi)有pageEncoding屬性,tomcat會(huì)采用contentTypecharset編碼來(lái)讀取jsp文件,我的jsp文件編碼通常設(shè)置為UTF-8,contentTypecharset也設(shè)置為UTF-8,這樣tomcat使用UTF-8編碼來(lái)解碼讀取的jsp文件,二者編碼一致也不會(huì)出現(xiàn)亂碼。這只是contentTypecharset的一個(gè)作用,它還有兩個(gè)作用,后面再說(shuō)。可能有人會(huì)問(wèn):如果我既不設(shè)置pageEncoding屬性,也不設(shè)置contentTypecharset屬性,那么tomcat會(huì)采取什么編碼來(lái)解碼讀取的jsp文件呢?答案是iso-8859-1,這是tomcat讀取文件采用的默認(rèn)編碼,如果用這種編碼來(lái)讀取文件顯然會(huì)出現(xiàn)亂碼。

       

        問(wèn)題四:輸出。

    問(wèn)題二和問(wèn)題三分析的過(guò)程其實(shí)就是從源文件àclass文件過(guò)程中的轉(zhuǎn)碼情況。最終的class文件都是以unicode編碼的,我們前面所做的工作就是把各種不同的編碼轉(zhuǎn)換為unicode編碼,比如從GBK轉(zhuǎn)換為unicode,UTF-8轉(zhuǎn)換為unicode。因?yàn)橹挥胁捎谜_的編碼來(lái)轉(zhuǎn)碼才能保證不出現(xiàn)亂碼。Jvm在運(yùn)行時(shí)其內(nèi)部都是采用unicode編碼的,其實(shí)在輸出時(shí),又會(huì)做一次編碼的轉(zhuǎn)換。讓我們分兩種情況來(lái)討論。

    1.java中采用Sysout.out.println輸出。

    比如:Sysout.out.println(“我們”)。經(jīng)過(guò)正確的解碼后我們unicode保存在內(nèi)存中的,但是在向標(biāo)準(zhǔn)輸出(控制臺(tái))輸出時(shí),jvm又做了一次轉(zhuǎn)碼,它會(huì)采用操作系統(tǒng)默認(rèn)編碼(中文操作系統(tǒng)是GBK),將內(nèi)存中的unicode編碼轉(zhuǎn)換為GBK編碼,然后輸出到控制臺(tái)。因?yàn)槲覀儾僮飨到y(tǒng)是中文系統(tǒng),所以往終端顯示設(shè)備上打印字符時(shí)使用的也是GBK編碼。因?yàn)榻K端的編碼無(wú)法手動(dòng)改變,所以這個(gè)過(guò)程對(duì)我們來(lái)說(shuō)是透明的,只要編譯時(shí)能正確轉(zhuǎn)碼,最終的輸出都將是正確的,不會(huì)出現(xiàn)亂碼。在Eclipse中可以設(shè)置控制臺(tái)的字符編碼,具體位置在Run Configuration對(duì)話框的Common標(biāo)簽里,我們可以試著設(shè)置為UTF-8,此時(shí)的輸出就是亂碼了。因?yàn)檩敵鰰r(shí)是采用GBK編碼的,而顯示卻是使用UTF-8,編碼不同,所以出現(xiàn)亂碼。

     

    2.jsp中使用out.println()輸出到客戶端瀏覽器。

    Jsp編譯成class后,如果輸出到客戶端,也有個(gè)轉(zhuǎn)碼的過(guò)程。Java會(huì)采用操作系統(tǒng)默認(rèn)的編碼來(lái)轉(zhuǎn)碼,那么tomcat采用什么編碼來(lái)轉(zhuǎn)碼呢?其實(shí)tomcat是根據(jù)<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>contentTypecharset參數(shù)來(lái)轉(zhuǎn)碼的,contentType用來(lái)設(shè)置tomcat往瀏覽器發(fā)送HTML內(nèi)容所使用的編碼。Tomcat根據(jù)這個(gè)編碼來(lái)轉(zhuǎn)碼內(nèi)存中的unicode。經(jīng)過(guò)轉(zhuǎn)碼后tomcat輸出到客戶端的字符編碼就是utf-8了。那么瀏覽器怎么知道采取什么編碼格式來(lái)顯示接收到的內(nèi)容呢?這就是contentTypecharset屬性的第三個(gè)作用了:這個(gè)編碼會(huì)在HTTP響應(yīng)頭中指定以通知瀏覽器。瀏覽器使用http響應(yīng)頭的contentTypecharset屬性來(lái)顯示接收到的內(nèi)容。

    總結(jié)一下contentType charset的三個(gè)作用:

    1).在沒(méi)有pageEncoding屬性時(shí),tomcat使用它來(lái)解碼讀取的jsp文件。

    2).tomcat向客戶端輸出時(shí),使用它來(lái)編碼發(fā)送的內(nèi)容。

    3).通知瀏覽器,應(yīng)該以什么編碼來(lái)顯示接收到的內(nèi)容。

    為了能更好的理解上面所說(shuō)的解碼和轉(zhuǎn)碼過(guò)程,我們舉一個(gè)例子。

    新建一個(gè)index.jsp文件,該文件編碼為GBK,jsp開(kāi)頭我們寫上如下代碼:

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="GBK"%>

    這里的charsetpageEncoding不同,但是也不會(huì)出現(xiàn)亂碼,我來(lái)解釋一下。首先tomcat讀取jsp內(nèi)容,并根據(jù)pageEncoding指定的GBK編碼將讀取的GBK字節(jié)解碼并轉(zhuǎn)換為unicode字節(jié)碼保存在class文件中。然后tomcat在輸出時(shí)(out.println())使用charset屬性將內(nèi)存中的unicode轉(zhuǎn)換為utf-8編碼,并在響應(yīng)頭中通知瀏覽器,瀏覽器以utf-8顯示接收到的內(nèi)容。整個(gè)過(guò)程沒(méi)有一次轉(zhuǎn)碼錯(cuò)誤,所以就不會(huì)出現(xiàn)亂碼情況。

     

        問(wèn)題五:PropertiesResourceBundle使用的解碼編碼。

                   以上兩個(gè)是我們常用的類,他們?cè)谧x取文件過(guò)程中并不允許我們指定解碼編碼,那么它們采取什么解碼方式呢?查看源碼后發(fā)現(xiàn)都是采用iso-8859-1編碼來(lái)解碼
               的。這樣的話我們也不難理解我們寫的
    properties文件為什么都是iso-8859-1 的了。因?yàn)椴扇∪魏我粋€(gè)別的編碼都將產(chǎn)生亂碼。因?yàn)?/span>iso-8859-1編碼是沒(méi)
               有中文的,所以我們輸入的中文要轉(zhuǎn)換為
    unicode,通常我們使用插件來(lái)完成,也可以使用jdk自帶的native2ascii工具。
    posted on 2011-05-26 10:35 zhangchao 閱讀(40457) 評(píng)論(19)  編輯  收藏 所屬分類: J2SE

    FeedBack:
    # re: Java編碼問(wèn)題匯總
    2011-05-26 11:00 | 窩窩硬是給
    總結(jié)的不錯(cuò) 學(xué)習(xí)了  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2011-05-26 11:01 | 窩窩影視
    總結(jié)的不錯(cuò) 學(xué)習(xí)了  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總[未登錄](méi)
    2011-05-26 15:57 | snail
    總結(jié)的不錯(cuò)!不過(guò)我對(duì)這句話還有一點(diǎn)疑問(wèn),為什么都是GBK編碼的。
    這里還有一點(diǎn),如果把”我們”換成123或abc之類的ascii碼字符,那么無(wú)論是采用getBytes()或者getBytes(“UTF-8”)那么生成的文件都將是GBK編碼的。  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2011-05-26 16:16 | zhangchao
    @snail
    這個(gè)我也沒(méi)搞明白,只是測(cè)試得到這個(gè)結(jié)果。我想可能是ascii碼的字符對(duì)于utf-8和gbk都沒(méi)關(guān)系,因?yàn)椴粫?huì)涉及亂碼。如果當(dāng)中夾雜一個(gè)中文字符,結(jié)果生成的文件肯定是utf-8了。一家之言,還望研究更深的朋友能斧正。  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2011-05-29 11:38 | 來(lái)如風(fēng)
    @snail
    這些英文字符,全世界通用,所以全世界編碼都一樣,所以,在各種編碼中,數(shù)值也一樣!!  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總[未登錄](méi)
    2013-03-15 21:04 | 小可
    @snail
    呵呵 ,不是吧! 看起來(lái)是一樣的是因?yàn)椋琔TF-8 , GBK 下對(duì) ascii編碼出來(lái)是一樣的,都是占用一個(gè)字節(jié)與ascii本身編碼相同。  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總[未登錄](méi)
    2013-03-22 20:37 | li
    謝謝 這個(gè)問(wèn)題糾結(jié)了昨天一天終于找到答案了  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2013-07-06 14:21 | 瑾心
    非常感謝,終于解決問(wèn)題了。  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2013-08-15 06:52 | 海南大學(xué)
    這個(gè)回答幫了我大忙了,謝謝哈  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2013-08-15 07:12 | 海南大學(xué)
    不過(guò)我有個(gè)疑問(wèn),java的控制臺(tái),也就是顯示器上
    我們調(diào)用這個(gè)方法System.out.println("abcd字符串a(chǎn)bcd");那么這個(gè)方法是采用什么編碼方式顯示一個(gè)字符傳遞 ???????  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總[未登錄](méi)
    2014-03-10 20:21 | s
    擼主貴姓?_?  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-03-11 09:51 | zhangchao
    兄臺(tái)有何貴干?@s
      回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-04-21 15:26 | Jemutse
    樓主:我還是有點(diǎn)疑問(wèn),本人做了一個(gè)測(cè)試,操作系統(tǒng)為英文Win7系統(tǒng)默認(rèn)字符編碼為ANSI,項(xiàng)目中所有文件均保存為UTF-8,然后采用InputStreamReader讀取了一個(gè)txt文件文件中輸入中文字符,
    File file = new File(filename);
    InputStreamReader in = new InputStreamReader(new FileInputStream(file));
    char[] buffer = new char[(int) file.length()];
    int len = in.read(buffer);
    String results = new String(buffer,0,len);
    System.out.println("-------------"+results);
    并沒(méi)有指定txt文件讀取時(shí)的charset,按道理應(yīng)該使用系統(tǒng)默認(rèn)的字符集ANSI解碼編碼,為什么輸出時(shí)還是能得到正確的txt中的中文?  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-04-21 16:44 | zhangchao
    你是在Eclipse中運(yùn)行的還是在命令行使用java命令運(yùn)行程序的?@Jemutse
      回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-06-06 18:10 | 獨(dú)獨(dú)小三
    樓主總結(jié)得很全面,很受益。  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-06-06 18:13 | 獨(dú)獨(dú)小三
    不過(guò)我在測(cè)試javac編碼文件(gbk和utf-8)時(shí),沒(méi)有測(cè)出編碼錯(cuò)誤,不知道為什么。  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-06-24 11:42 | zhangchao
    謝謝你的肯定,很早的一篇的博文了,權(quán)當(dāng)拋磚引玉,希望能幫大家解決編碼問(wèn)題。@獨(dú)獨(dú)小三
      回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-07-14 14:46 | 張鵬
    謝謝分享  回復(fù)  更多評(píng)論
      
    # re: Java編碼問(wèn)題匯總
    2014-09-09 23:40 | zuidaima
    java demo學(xué)習(xí)實(shí)例教程源代碼下載:http://zuidaima.com/share/kjava-p1-s1.htm  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费大片在线观看网站| 日本免费的一级v一片| 国产免费不卡v片在线观看| 妞干网免费视频观看| 亚洲精品第一国产综合境外资源| 亚洲人成网77777色在线播放| 亚洲A∨无码一区二区三区| 亚洲国产精品综合久久20| 成人亚洲国产精品久久| 日韩视频免费在线观看| 一个人免费高清在线观看| 国产又黄又爽又刺激的免费网址| 亚洲婷婷五月综合狠狠爱| 亚洲国产美女精品久久| 美女被免费网站在线视频免费 | 无码人妻精品中文字幕免费| 亚欧人成精品免费观看| 国产美女无遮挡免费网站| 亚洲精品无码不卡在线播HE| 亚洲国产电影在线观看| 无码免费又爽又高潮喷水的视频| 无码国产精品一区二区免费模式 | 一级毛片免费观看不收费| 久久99精品免费视频| 永久免费AV无码网站在线观看| 亚洲乱码中文字幕综合 | 亚洲免费一级视频| 日本永久免费a∨在线视频| 99久久99久久精品免费观看| 国产成人免费ā片在线观看| 亚洲成AV人片在线观看无| 亚洲欧美日韩中文无线码| 中文无码成人免费视频在线观看| 三年片在线观看免费大全| 伊人久久亚洲综合| 日本亚洲色大成网站www久久| 97人妻精品全国免费视频 | 亚洲av无码乱码国产精品fc2| 亚洲欧美成人av在线观看| 一级成人a毛片免费播放| 免费萌白酱国产一区二区|