使用java從亂碼文本中解析出正確的文本
這是一個可以從亂碼文本中得到正確的原始文本的程序,其基于的原理在于錯誤的編碼往往導致位補充,因此正確的文本使用的字節(jié)數(shù)應該是最少的(之一)。
package com.hongyuan.test;
import java.io.UnsupportedEncodingException;
/*
* 這是一個可以從亂碼文本中得到正確的原始文本的程序,其基于的原理在于錯誤的編碼往往導致位補充,
* 因此正確的文本使用的字節(jié)數(shù)應該是最少的(之一)。
*
* 如果你在測試此程序時,無法得到正確的文本,可能的原因如下:
* 1.此程序僅能從一次錯誤編碼文本中得到原始文本,無法從多次錯誤編碼中恢復文本。
* 2.有時錯誤的編碼導致一些字符變?yōu)椴豢梢娮址?,你可能沒有把所有的亂碼文本拷貝過來,從而導致位缺失。這種情況下無法恢復文本。
* 3.原始文本是一個比較大的字符集,錯誤的編碼使用小的字符集,那些在小字符集之外的字符信息丟失,無法從中解析正確的文本。
* 4.恭喜你中獎了,有一些字符使用任何一種編碼沒有什么不同或者錯誤的編碼沒有導致位補充,那么我也無能為力了。(這種情況確實很少見)
*
* 注:程序中的亂碼文本是將百度首頁(utf-8)調(diào)整為gbk(顯然會亂碼)得到的,有興趣的同志可以使用其他的亂碼測試。有問題歡迎回復。
*/
public class CharSetTest {
public static final String[] CHARSET_NAMES=new String[]{"ISO8859-1","GBK","UTF-8"};
public static void main(String[] args) throws UnsupportedEncodingException {
//亂碼字符串
String str="寰蔣鐧懼害鍏辨帹Windows XP鑱斿悎闃叉姢瑙e喅鏂規(guī)";
int strLength=Integer.MAX_VALUE; //字符長度
String newStr=""; //從亂碼字符串分析出的字符串
String srcCharSet=""; //當前亂碼字符串編碼
String targetCharSet=""; //亂碼字符串正確的編碼
//遍歷可能的編碼組合,從中造成編碼長度最小的編碼格式
for(int i=0;i<CHARSET_NAMES.length;i++){
for(int j=0;j<CHARSET_NAMES.length;j++){
String temp=new String(str.getBytes(CHARSET_NAMES[i]),CHARSET_NAMES[j]);
//System.out.println(temp);
if(temp.length()<=strLength){
strLength=temp.length();
newStr=temp;
srcCharSet=CHARSET_NAMES[i];
targetCharSet=CHARSET_NAMES[j];
}
}
}
//輸出查詢到的編碼及正確文本格式
System.out.println(srcCharSet+"-->"+targetCharSet+":"+newStr);
}
}
- java自動根據(jù)文件內(nèi)容的編碼來讀取避免亂碼
- java生成csv文件亂碼的解決方法示例 java導出csv亂碼
- JavaScript中的常見問題解決方法(亂碼,IE緩存,代理)
- java頁面中文亂碼的解決辦法
- javascript alert亂碼的解決方法
- java URL亂碼的解決辦法
- 解析關(guān)于java,php以及html的所有文件編碼與亂碼的處理方法匯總
- JAVA POST與GET數(shù)據(jù)傳遞時中文亂碼問題解決方法
- java連接mysql數(shù)據(jù)庫亂碼的解決方法
- java中Filter過濾器處理中文亂碼的方法
- Java下載文件時文件名亂碼問題解決辦法
- java中Servlet處理亂碼的方法
- java 頁面url傳值中文亂碼的解決方法
- javascript通過url向jsp頁面?zhèn)鬟f中文參數(shù)導致亂碼解決方案
- java 逐行讀取txt文本如何解決中文亂碼
- JavaScript中出現(xiàn)亂碼的處理心得
- Javascript和Ajax中文亂碼吐血版解決方案
- JavaScript讀取中文cookie時的亂碼問題的解決方法
相關(guān)文章
Spring之ShutDown?Hook死鎖現(xiàn)象解讀
這篇文章主要介紹了Spring之ShutDown?Hook死鎖現(xiàn)象解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
mybatis中orderBy(排序字段)和sort(排序方式)引起的bug及解決
這篇文章主要介紹了mybatis中orderBy(排序字段)和sort(排序方式)引起的bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
spring MVC cors跨域?qū)崿F(xiàn)源碼解析
本文主要介紹了spring MVC cors跨域?qū)崿F(xiàn)源碼解析。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02
MyBatis-Plus中實現(xiàn)自定義復雜排序邏輯的詳細步驟
這篇文章主要介紹了MyBatis-Plus中實現(xiàn)自定義復雜排序邏輯,通過使用MyBatis-Plus的QueryWrapper和SQL原始片段,我們可以靈活地實現(xiàn)復雜的數(shù)據(jù)排序邏輯,這種方法尤其適用于需要對數(shù)據(jù)進行特定規(guī)則排序的場景,需要的朋友可以參考下2024-07-07

