Maison >tutoriels informatiques >connaissances en informatique >Comment convertir une chaîne en codage GB2312 en Java ?
@Test
public void test333(){
String a="青白";
essayez {
byte[] b=a.getBytes("GB2312");
System.out.println(bytesToHexFun1(b));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
//Convertir un tableau d'octets en chaîne hexadécimale
public static String bytesToHexFun1(byte[] bytes) {
char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'} ;
// Un octet est composé de 8 bits et peut être identifié par deux chiffres hexadécimaux
char[] buf = nouveau char[bytes.length * 2];
int a = 0;
index int = 0;
for(byte b : bytes) { // Convertir en utilisant la division et le reste
si(b
a = 256 + b;
} autre {
a = b;
}
buf[index++] = HEX_CHAR[a/16];
buf[index++] = HEX_CHAR[a % 16];
}
retourner une nouvelle chaîne(buf);
}
L'idée centrale est de le convertir d'abord en un tableau d'octets GB2312, puis de le convertir en hexadécimal.
1. Affichez le chinois sur la page Web.
Le codage utilisé par JAVA dans la transmission réseau est "ISO-8859-1", il doit donc être converti lors de la sortie, comme :
String str="中文\;
str=new String(str.getBytes("GB2312"),"8859_1");
Mais si l'encodage utilisé lors de la compilation du programme est "GB2312" et que le programme est exécuté sur une plate-forme chinoise, ce problème ne se produira pas, alors soyez attentif.
2. Lire le chinois à partir des paramètres
C'est exactement le contraire du résultat sur la page Web :
str=new String(str.getBytes("8859_1"),"GB2312");
3. Gérer les problèmes chinois dans DB
Une méthode plus simple est la suivante : dans le "Panneau de configuration", définissez la "Région" sur "Anglais (États-Unis)". Si des caractères tronqués apparaissent toujours, vous pouvez également effectuer les réglages suivants :
Lorsque vous obtenez le chinois : str=new String(str.getBytes("GB2312"));
Saisissez le chinois dans la base de données : str=new String(str.getBytes("ISO-8859-1"));
4. Solution chinoise en jsp :
Dans le « Panneau de configuration », définissez la « Région » sur « Anglais (États-Unis) ».
Ajouter à la page JSP :
S'il ne peut toujours pas être affiché normalement, la conversion suivante doit être effectuée :
Par exemple : name=new String(name.getBytes("ISO-8859-1"),"GBK");
Il n'y aura pas de problème chinois.
J'en ai trouvé un en ligne, essayez-le :
/**
* Unicode en chaîne
* @param str
* @retour
*/
public static String unicode2Str(String str) {
StringBuffer sb = new StringBuffer();
String[] arr = str.split("\\u");
int len = arr.length;
sb.append(arr[0]);
pour(int i=1; i String tmp = arr[i]; char c = (char)Integer.parseInt(tmp.substring(0, 4), 16); sb.append(c); sb.append(tmp.substring(4)); } return sb.toString(); } /** * Convertir la chaîne en Unicode * @param str * @retour */ String statique publique str2Unicode(String str) { StringBuffer sb = new StringBuffer(); char[] charArr = str.toCharArray(); pour (char ch : charArr) { si (ch > 128) { sb.append("\u" + Integer.toHexString(ch)); } autre { sb.append(ch); } } return sb.toString(); } public static void main(String[] args) { System.out.println(str2Unicode("222dstest1testaa")); String str = "u6d4b1u8bd5aa"; System.out.println(unicode2Str(str)); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!