『壹』 如何解決java項目中的中文亂碼
設置工作空間的編碼:
編輯器的編碼會影響到所有的項目中的字元的顯示,可以說是作用最為廣泛的設置,每一個項目都會受到這個設置的影響。點擊菜單欄中的窗口(Window)— —選項(Preferences)。
點擊常規(General)— —工作空間(Wordspace),然後在右側的文本文件編碼格式(Text file encoding)中選擇你想要設置的編碼格式,系統默認的格式為GBK。
設置項目的編碼:
如果其他的項目中不存在亂碼問題,只是個別項目顯示時出現亂碼,那麼我們不需要設置工作空間的編碼,只需要修改項目的編碼即可。
選中項目後,右鍵點擊,在彈出的菜單中點擊屬性(Properties)。
在彈出的屬性窗口中,選擇資源(Resource)— —點擊選擇Other(其他),然後選擇你想要的編碼格式。
設置單個文件的編碼:
只是個別文件出現了亂碼,那麼設置個別文件的編碼格式就可以解決問題了。選中有亂碼的文件,然後點擊右鍵。
在彈出的菜單中選擇屬性(Properties)。
在彈出的屬性窗口中選擇資源,點擊Other(其他)後設置個別文件的編碼方式
『貳』 java爬蟲一段話里的部分字元亂碼解決
1. 網路爬蟲亂碼的原因。
源網頁的編碼與抓取後的編碼轉換不一致。如果源網頁是gbk編碼的位元組流,程序在我們抓取後直接用utf-8編碼輸出到存儲文件,這必然會造成亂碼,即當源網頁編碼與程序抓取後直接處理編碼一致時,就不會出現亂碼,然後統一字元編碼後也就不會出現亂碼。注意區分源網路代碼A,程序B直接使用的代碼,統一轉換字元的代碼C。
2. 是網頁的伺服器端代碼。
B.捕獲的數據原本是位元組數組,由A編碼,只有B=A才能保證不會出現亂碼;否則,當字元集不兼容時,就會出現亂碼字元。這一步常用於測試。
c、統一轉碼是指在獲得網頁的原始編碼A後進行統一編碼,主要是將每個網頁的數據統一成一種編碼,往往首選字元集較大的utf-8。
每個網頁都有自己的代碼,比如gbk,utf-8,iso8859-1,日本jp系統代碼,西歐,俄語等等。爬行時,所有類型的代碼都將被擴展。有的爬蟲只是簡單的識別網頁,然後統一編碼,有的則直接按照utf-8統一處理,不需要判斷源網頁,顯然會造成亂碼。
3. 亂碼的解決方案。
根據原因找到解決辦法很簡單。
1) 確定源網頁的代碼a。
代碼a通常位於網頁的三個位置,即httpheader的內容、網頁的元字元集和網頁標題中的文檔定義。獲取源網頁代碼時,依次判斷這三部分數據,從頭到尾優先順序相同。
理論上這是對的,但是國內有些網站不符合標准。比如寫出來的gbk其實是utf-8,有的寫出來是utf-8,其實是gbk。當然這是幾個網站,但是確實存在。因此,在確定網頁編碼時,應該對這種特殊情況給予特殊處理,如中文檢查、默認編碼等策略。
在另一種情況下,如果以上三種都沒有編碼信息,一般使用第三方的網頁編碼智能識別工具,如cpdetector。原理是通過統計位元組數組的特性來計算實際編碼,有一定的准確率,但是我發現在實踐中准確率還是很有限的。
但是綜合以上三種編碼確認方法後,中文亂碼的問題幾乎可以完全解決。在我的基於nutch1.6的網路爬蟲系統中,經過統計,編碼准確率可以達到99.99%,這也證明了上述方法和策略的可行性。
2) 程序通過代碼b還原源網頁數據。
顯然,這里的B應該等於a,在java中,如果源網頁的位元組數組是source_byte_array,就會轉換成stringstr=newstring(source_byte_array,B)。即這些位元組數組對應的字元被正確編碼顯示在內存中,此時列印結果正常。此步驟通常用於調試或控制台輸出測試。
3) 統一轉碼。
網路爬蟲系統中有很多數據源。如果無法使用數據,它將被轉換為其原始數據,如果這樣做是浪費的。所以一般爬蟲系統要對抓取的結果進行統一編碼,做到一致,使用方便。此時,在(2)的基礎上,可以進行統一的編碼轉換,在java中的實現如下。
源網頁的位元組數組是source_byte_array。
轉換為普通字元串:stringnormal_source_str=newstring(source_byte_array,c)。這時候可以直接用javaapi存儲,但是字元串往往不直接寫。因為一般爬蟲存儲是將多個源網頁存儲在一個文件中,所以要記錄位元組偏移量,所以下一步。 再將得到的str轉換為統一的編碼C格式的位元組數組,則byte[] new_byte_array=normal_source_str.getBytes(C)即可,此時即可用java io api將數組寫入文件,並記錄相應的位元組數組偏移量等,待真正使用時,直接io讀取即可。
爬蟲過程不僅會存在亂碼問題,還會存在網站爬取涉及法律、IP受限,爬取行為受限等等問題,這個時候就需要不斷去解決這些問題。
『叄』 java列印中文亂碼
java控制台中文輸出亂碼,已經注意文件格式和控制台格式了?不要用系統寫字板notepad保存UTF8的Java源文件。M$的UTF8是UTF8withBOM,而Java編譯器識別的UTF8是UTF8withoutBOM,兩者不兼容。
eclipse中java中文控制台輸出的這種亂碼解決方式:(1)打開eclipse或myeclipse,點擊run-》runconfigurations如圖提示,改成UTF-8,有的eclipse或myeclipse有可能需要gbk的形式,不同形式改成不同的編碼,嘗試一下即可。
設置單個文件的編碼:只是個別文件出現了亂碼,那麼設置個別文件的編碼格式就可以解決問題了。選中有亂碼的文件,然後點擊右鍵。在彈出的菜單中選擇屬性(Properties)。
java中輸入輸出中文亂碼,怎麼辦?1、在代碼區域右鍵-runas-runconfigurations-common(右側)-consoleencoding如果出現此錯誤,此時的編碼格式應該是UTF-8,選擇Other,這時可能沒有GBK選項,如果沒有,則執行之後操作。
2、讀取文件的時候如果是用的read方法(位元組流),碰到中文輸出就是亂碼,然後存儲的時候設置下編碼為GBK或者是UTF-8形式即可,可以有效的解決亂碼問題。
3、java文件讀取的時候有中文就很出現亂碼,通常獲取到的文件中通常都是「iso8859-1」格式,需要轉換為「UTF-8」格式。
Java程序輸出txt文件內容時中文亂碼怎麼解決?
解決辦法:在代碼區域右鍵-runas-runconfigurations-common(右側)-consoleencoding如果出現此錯誤,此時的編碼格式應該是UTF-8,選擇Other,這時可能沒有GBK選項,如果沒有,則執行之後操作。
txt文檔一般是GBK編碼格式的,你可以將它另存一下,改為Utf-8格式,你也可以將你的開發工具調成GBK編碼格式,總之就是將你的開發環境的編碼格式與你要讀取的txt文件的編碼格式調成一致的。
讀取文件的時候如果是用的read方法(位元組流),碰到中文輸出就是亂碼,然後存儲的時候設置下編碼為GBK或者是UTF-8形式即可,可以有效的解決亂碼問題。
把txt文件重新另存為時選擇編碼為與編輯器IED的編碼一致,比如我IntellijIDEA的編輯器右下角顯示為utf-8,然後把要讀取的txt文件另存為的時候編碼選項選擇utf-8,再次運行程序時,就能顯示中文。
只是個別文件出現了亂碼,那麼設置個別文件的編碼格式就可以解決問題了。選中有亂碼的文件,然後點擊右鍵。在彈出的菜單中選擇屬性(Properties)。
eclipse中java中文控制台輸出的這種亂碼怎麼解決解決方法其實很簡單,設置一下編碼就行了。打開Eclipse,右鍵點擊項目文件,然後點擊最下方的屬性。
進行再textfileencoding進行勾選上default的選項即可。
這不是亂碼,原因很明顯,索引String數組錯誤,將最後一個for循環裡面的zfc改成zfc[j]即可。
改變整個工作空間的編碼格式,這樣以後新建的文件也是新設置的編碼格式。
為什麼我用sublime寫java代碼時列印中文列印出來是亂碼?請問大神編碼...1、點擊「preferences」菜單,選擇「BrowsePackages」打開插件所在目錄,找到「java」這一項,雙擊打開。後綴名為sublime-build的文件是編譯程序的命令,找到JavaC.sublime-build,拖入SublimeText2打開進行編輯。
2、產生原因:因為這個開源項目的默認字元編碼不對,所以控制台的字元編碼也自動變成了UTF-8,而鍵盤的輸入流的默認格式是GBK格式,這樣就造成了在GBK轉UTF-8的過程中產生的奇數亂碼錯誤(這個問題的解釋可以在搜索引擎找到)。
3、SublimeText軟體中,用這款代碼編輯器打開某個GB2312和GBK編碼的文件時,大家可能會遇到中文顯示亂碼的情況,這是因為SublimeText軟體默認的不支持GB2312和GBK編碼格式,想要它能夠正常顯示中文就需要在軟體中安裝一個中文插件包。
4、字元編碼問題:ide下設成utf-8命令行下檢查字元頁設置對不對。修改cmd窗口字元編碼為UTF-8,命令行中執行:chcp65001切換回中文:chcp936這兩條命令只在當前窗口生效,重啟後恢復之前的編碼。
5、SublimeText2目前還不支持gbk編碼,UTF-8完美支持。因此,你的文件出現中文亂碼應該是打開gbk編碼的文件,你可以用系統的記事本直接另存為UTF-8編碼的。
6、java文件讀取的時候有中文就很出現亂碼,通常獲取到的文件中通常都是「iso8859-1」格式,需要轉換為「UTF-8」格式。
『肆』 java中文亂碼問題要怎麼解決
解決Java中文亂碼問題,先從其根源原因出發。亂碼出現的原因是Java代碼使用的是UTF-8編碼,然而在某些情況下,如CMD環境,其默認編碼為gbk,編碼格式不一致導致了亂碼現象。
為避免此類問題,建議採取如下措施:首先,避免在類名中使用中文,這是避免亂碼問題的根本所在。其次,在進行Java程序調試時,盡量使用IDE環境,如Eclipse或IntelliJ IDEA,而避免直接在CMD中運行程序,這樣可以降低出現亂碼的可能性。最後,盡管在某些開發階段可能會因為習慣等原因在代碼中使用中文,但在正式的項目開發中,應當嚴格避免使用中文,以確保程序的穩定性和兼容性。
『伍』 win7系統下Java在cmd命令下輸入中文顯示亂碼如何解決
近日有用戶到本站反饋說碰到這樣一個問題,就是在cmd命令下,java輸入中文顯示亂碼,碰到這樣的問題該怎麼辦呢,本文就給大家講解一下win7系統下Java在cmd命令下輸入中文顯示亂碼的具體解決方法。
先看java代碼:
先看亂碼效果:
解決方案:
1、開始計算機滑鼠反鍵(滑鼠右鍵)屬性;
2、高級系統設置;
3、環境變數;
4、系統變數;
5、新建。然後輸入:「JAVA_TOOL_OPTIONS」變數,值為「-Dfile.encoding=UTF-8」;
6、然後確定、確定、在確定後。新開命令行窗口,再次輸入javac命令。