Maison  >  Article  >  tutoriels informatiques  >  Comment convertir une chaîne en codage GB2312 en Java ?

Comment convertir une chaîne en codage GB2312 en Java ?

王林
王林avant
2024-01-20 08:42:13492parcourir

Comment convertir une chaîne en codage GB2312 en Java ?

Comment convertir une chaîne en encodage original 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.

Problème de conversion d'octets de chaîne Java

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.

Conversion de type de chaîne Java

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer