Il s'agit d'un programme qui peut obtenir le texte original correct à partir de texte brouillé, basé sur le principe que le mauvais codage conduit souvent à une supplémentation en bits, de sorte que le nombre d'octets utilisés par le texte correct devrait être le plus petit (un).
La copie de code est la suivante:
Package com.hongyuan.test;
Importer java.io.UNSUPPORTEDENCODINGException;
/ *
* Il s'agit d'un programme qui peut obtenir le texte original correct à partir de texte brouillé, basé sur le principe que le codage incorrect conduit souvent à une supplémentation en bit,
* Par conséquent, le texte correct doit utiliser le nombre minimum d'octets (un).
*
* Si vous ne pouvez pas obtenir le texte correct lors du test de ce programme, les raisons possibles sont les suivantes:
* 1. Ce programme ne peut obtenir le texte d'origine qu'à partir du texte codé par erreur et ne peut pas récupérer le texte à partir du texte codé multiple.
* 2. Parfois, un mauvais codage fait que certains personnages deviennent des caractères invisibles, et vous ne pouvez pas copier tout le texte brouillé, ce qui entraîne des bits manquants. Dans ce cas, le texte ne peut pas être restauré.
* 3. Le texte d'origine est un jeu de caractères relativement grand.
* 4. Félicitations pour avoir remporté le prix. (C'est en effet rare)
*
* Remarque: Le texte brouillé du programme est obtenu en ajustant la page d'accueil de Baidu (UTF-8) à GBK (évidemment brouillé). Si vous avez des questions, n'hésitez pas à répondre.
* /
classe publique CharsetTest {
Public static final String [] charSet_Names = new String [] {"ISO8859-1", "GBK", "UTF-8"};
public static void main (String [] args) lève un peu supporté
// String à garbose
String str = "中文版文版文版文版";
int strLength = Integer.max_value; // longueur de caractères
String NewsTr = ""; // Stands analysé à partir de cordes brouillées
String srccharset = ""; // codage de chaîne brouillé en cours
String TargetCharset = ""; // Encodage correct des chaînes brouillées
// voyage à travers d'éventuelles combinaisons de codage pour créer le format de codage avec la plus petite longueur de codage
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];
}
}
}
// Sortie du code de requête et du format de texte correct
System.out.println (SrcCharset + "->" + TargetCharset + ":" + newstr);
}
}