徹底解決程式亂碼問題
由於程式程式設計過程中存在眾多的編碼集,而這些編碼集又各自有自己的方法來表示一箇中文字元。由此,造成我們的程式顯示中文的時候亂碼。最多的是本來是中文,但結果顯示為問號?
這篇文章從我碰到過的問題來從根本上解決亂碼的問題,反正我用這個方法是百戰百勝^_^嘎嘎
我們知道,在我們的中文系統中使用的是“GBK”編碼集。
也就是說,比如我們從本地系統中讀入一個包含中文內容的.txt檔案,那麼我們從這個磁碟空間所獲得是流檔案是個經過“GBK”的。
但是,假如我們的JVM預設的編碼集是“ISO-8859-1”,那麼這個流檔案經過我們的JVM編碼就變成一個Unicode的字元或者字串。
是不是說的很抽象。
下面我具體解釋一下。
什麼是編碼?編碼說白了就是從位元組到字元(Unicode)的過程,因為我們的字元或字串在JVM中是用Unicode表示的,也就是說編碼實質上是獲取一個Unicode碼的過程。
我再來解釋一下解碼?解碼就是把JVM裡的Unicode碼轉換成我們本地字符集所表示的位元組流。
如果在程式設計過程中,JVM預設的字符集和我們的中文系統,或者資料庫檔案等採用的字符集不一樣。
這樣的情況下,如果我們僅僅是編碼,而不去解碼。也就說把本來用“GBK”的位元組流採用“ISO-8859-1”轉換成字元或字串,這個時候就產生了亂碼。
當然,現在JVM和中文系統預設的編碼集已經一樣了,所以產生這種情況的很少。但是在讀取資料庫檔案的時候依然會經常碰到這種情況。所以,我一貫主張從本質上來了解一個知識,然後才能融會貫通,應用自如,這是高手的境界,當然,我不能算高手^_^哈哈
好了,如果你現在還不明白編碼解碼怎麼回事?以及亂碼產生的原因。我想你可以去撞牆了。
那麼,編碼的時候兩個系統的字符集不一致,該怎麼辦呢?怎麼樣把他們變成一致?
如果有可以直接改變系統字符集的方法,那當然是最好的了。比如在JVM裡
Properties pps = System.getProperties();
pps.put("file.encoding","GBK");
這樣,就把JVM的預設字符集改變成“GBK”了。
那麼,如果沒有改怎麼辦?
什麼?沒辦法?那是不可能滴,沒有程式解決不了的問題,這也是偶滴名言,嘎嘎!
當然要再次編碼了,或者說重新編碼!
還記得不?剛才我們解碼的時候得到一個利用JVM解碼的字元或字串(也可以說Unicode)
好,如果不記得,麻煩你再看看上面寫的,記性太差了!
我們利用這個字元或字串再重新編碼。
我們把這個字元或字串再次現出原形,也就是位元組陣列。
byte[] data = str.getBytes("ISO-8859-1");
好,現在又獲得了“ISO-8859-1”字符集下的位元組陣列。
這個裡面就完整的存放著我們想要的漢字,哈哈。
得到了位元組陣列,不就好辦了嗎?
還不會?沒關係,我教你!
String newstr = new String(data,“GBK”);
好了,得到了我們完整的字串了!編碼變成!
這個字串就是我們要的中文系統下的字串,它又經過我們“GBK”編碼過了!
可以放心的輸出到中文系統下了。
其實說白了,編碼解碼就是把我們從系統得到的字元轉換成位元組陣列,然後對它用系統字符集加工,加工完後再重新包裝,再把它輸出。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=664992
相關文章
- 徹底解決Python編碼問題Python
- 徹底搞懂 python 中文亂碼問題Python
- 手把手教你寫網路爬蟲(8):徹底解決亂碼問題爬蟲
- 徹底解決Hive小檔案問題Hive
- 解決中文亂碼問題
- 如何徹底解決pip install慢的問題
- 透過 Pulsar 原始碼徹底解決重複消費問題原始碼
- springmvc 解決中文亂碼問題SpringMVC
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- 解決Kali Linux 2020.1亂碼問題Linux
- TongWeb下亂碼問題解決思路Web
- java中亂碼問題解決方法Java
- js解決url中文亂碼問題JS
- cat 輸出亂碼問題解決
- 解決plsql中中文亂碼問題SQL
- flashfxp 亂碼,2種辦法解決flashfxp 亂碼問題
- phantomjs截圖中文亂碼問題解決JS
- JavaWeb 亂碼問題終極解決方案!JavaWeb
- 自定義RedisTemplate,解決Redis亂碼問題Redis
- Filter解決亂碼問題 -2024/11/6Filter
- 九種 “姿勢” 讓你徹底解決跨域問題跨域
- 【日誌亂碼】解決Tomcat啟動控制檯亂碼問題Tomcat
- 透徹分析和解決一切javaWeb專案亂碼問題JavaWeb
- 解決Intellij IDEA中執行緩慢的問題,tomcat控制檯列印亂碼問題,國際化亂碼配置檔案亂碼解決IntelliJIdeaTomcat
- 雲伺服器中文亂碼問題解決伺服器
- 解決Url帶中文引數亂碼問題
- Sublime Text 3 中文亂碼問題的解決
- python json.dumps中文亂碼問題解決PythonJSON
- SqlServer資料庫中文亂碼問題解決SQLServer資料庫
- 完美解決jspdf各種中文亂碼問題JS
- JMeter響應亂碼問題解決方案教程JMeter
- 【IDL】IDL中亂碼問題的解決方法
- 解決zabbix圖形化中文亂碼問題
- LiveCharts中文顯示亂碼問題的解決Echarts
- mysql使用source 命令亂碼問題解決方法MySql
- 空格在程式碼中變成其他字元或者亂碼問題解決方法字元
- 5個核心關鍵點,讓你徹底明白低程式碼能解決什麼問題!
- 行業乾貨-如何逆向解決QT程式漢化亂碼問題行業QT