欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用java從亂碼文本中解析出正確的文本

 更新時(shí)間:2014年04月09日 09:13:07   作者:  
這篇文章主要介紹了使用java從亂碼文本中解析出正確的文本的方法,需要的朋友可以參考下

這是一個(gè)可以從亂碼文本中得到正確的原始文本的程序,其基于的原理在于錯(cuò)誤的編碼往往導(dǎo)致位補(bǔ)充,因此正確的文本使用的字節(jié)數(shù)應(yīng)該是最少的(之一)。


復(fù)制代碼 代碼如下:

package com.hongyuan.test;

import java.io.UnsupportedEncodingException;

/*
 * 這是一個(gè)可以從亂碼文本中得到正確的原始文本的程序,其基于的原理在于錯(cuò)誤的編碼往往導(dǎo)致位補(bǔ)充,
 * 因此正確的文本使用的字節(jié)數(shù)應(yīng)該是最少的(之一)。
 *
 * 如果你在測(cè)試此程序時(shí),無(wú)法得到正確的文本,可能的原因如下:
 * 1.此程序僅能從一次錯(cuò)誤編碼文本中得到原始文本,無(wú)法從多次錯(cuò)誤編碼中恢復(fù)文本。
 * 2.有時(shí)錯(cuò)誤的編碼導(dǎo)致一些字符變?yōu)椴豢梢?jiàn)字符,你可能沒(méi)有把所有的亂碼文本拷貝過(guò)來(lái),從而導(dǎo)致位缺失。這種情況下無(wú)法恢復(fù)文本。
 * 3.原始文本是一個(gè)比較大的字符集,錯(cuò)誤的編碼使用小的字符集,那些在小字符集之外的字符信息丟失,無(wú)法從中解析正確的文本。
 * 4.恭喜你中獎(jiǎng)了,有一些字符使用任何一種編碼沒(méi)有什么不同或者錯(cuò)誤的編碼沒(méi)有導(dǎo)致位補(bǔ)充,那么我也無(wú)能為力了。(這種情況確實(shí)很少見(jiàn))
 *
 * 注:程序中的亂碼文本是將百度首頁(yè)(utf-8)調(diào)整為gbk(顯然會(huì)亂碼)得到的,有興趣的同志可以使用其他的亂碼測(cè)試。有問(wèn)題歡迎回復(fù)。
 */
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; //字符長(zhǎng)度
  String newStr="";     //從亂碼字符串分析出的字符串
  String srcCharSet="";    //當(dāng)前亂碼字符串編碼
  String targetCharSet="";   //亂碼字符串正確的編碼

  //遍歷可能的編碼組合,從中造成編碼長(zhǎng)度最小的編碼格式
  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];
    }
   }
  }
  //輸出查詢(xún)到的編碼及正確文本格式
  System.out.println(srcCharSet+"-->"+targetCharSet+":"+newStr);
 }

}

相關(guān)文章

  • java實(shí)現(xiàn)快速排序的方法

    java實(shí)現(xiàn)快速排序的方法

    這篇文章主要介紹了java實(shí)現(xiàn)快速排序的方法,涉及java排序的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • Java用jxl讀取excel并保存到數(shù)據(jù)庫(kù)的方法

    Java用jxl讀取excel并保存到數(shù)據(jù)庫(kù)的方法

    這篇文章主要為大家詳細(xì)介紹了Java用jxl讀取excel并保存到數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • @Cacheable 拼接key的操作

    @Cacheable 拼接key的操作

    這篇文章主要介紹了@Cacheable 拼接key的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java編程實(shí)現(xiàn)A*算法完整代碼

    Java編程實(shí)現(xiàn)A*算法完整代碼

    這篇文章主要介紹了Java編程實(shí)現(xiàn)A*算法完整代碼,簡(jiǎn)單介紹了a星算法,然后分享了完整測(cè)試代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • 通過(guò)圖例了解PowerDesigner使用方法

    通過(guò)圖例了解PowerDesigner使用方法

    這篇文章主要介紹了通過(guò)圖例了解PowerDesigner使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring Boot 實(shí)例代碼之通過(guò)接口安全退出

    Spring Boot 實(shí)例代碼之通過(guò)接口安全退出

    這篇文章主要介紹了Spring Boot 實(shí)例代碼之通過(guò)接口安全退出的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • Spring Boot 如何自定義返回錯(cuò)誤碼錯(cuò)誤信息

    Spring Boot 如何自定義返回錯(cuò)誤碼錯(cuò)誤信息

    這篇文章主要介紹了Spring Boot 如何自定義返回錯(cuò)誤碼錯(cuò)誤信息的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java稀疏數(shù)組的應(yīng)用實(shí)踐

    Java稀疏數(shù)組的應(yīng)用實(shí)踐

    本文主要介紹了Java稀疏數(shù)組的應(yīng)用實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java 通過(guò)反射給實(shí)體類(lèi)賦值操作

    Java 通過(guò)反射給實(shí)體類(lèi)賦值操作

    這篇文章主要介紹了Java 通過(guò)反射給實(shí)體類(lèi)賦值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • mybatis教程之延遲加載詳解

    mybatis教程之延遲加載詳解

    本篇文章主要介紹了mybatis教程之延遲加載詳解。詳細(xì)介紹了延遲加載的意義和用法實(shí)現(xiàn),有興趣的可以了解一下
    2017-05-05

最新評(píng)論