J'ai un problème vraiment bizarre. J'ai deux cordes qui sont chinse "君山", une de kafka, et une d'un champ mysql (utf8mb4). J'écris deux chaînes dans une autre table de mysql, aussi le champ est codé en utf8mb4, celui de kafka se transforme en code illisible "??", l'autre est ok!java écris du code illisible dans mysql avec utf8mb4
Puis-je imprimer deux cordes avec suivi du code Java
//old_name from kafka
//group.getName() from mysql
//old_name,group.getName() should be the same "君山"
char[] oldNameCharArray = old_name.toCharArray();
char[] newNameCharArray = group.getName().toCharArray();
System.out.print("oldName:")
for(char ch : oldNameCharArray) {
int value = (int)ch;
System.out.print((Integer.toHexString(value)));
}
System.out.println("-----------------------------------------");
System.out.print("newName:");
for(char ch : newNameCharArray) {
int value = (int)ch;
System.out.print(Integer.toHexString(value));
}
Je suis sortie comme ci-dessous:
oldName:541b5c71
-----------------------------------------
newName:15a17af515a12a12a
Je vérifier la table unicode, le texte chinse "君" devrait être "0x541b" et "山" devrait être "0x5c71". Donc oldName a du sens, je ne sais pas quel type de code est pour la sortie newName, et plus difficile à comprendre est que oldName devient un code illisible "??" après l'avoir sauvegardé dans mysql, le nom newName est bon.
Par ailleurs, j'utiliser le printemps + cadre mybatis pour faire fonctionner MySQL
Avez-vous vérifié le jeu de caractères de votre connexion? Quelle serait la commande 'afficher des variables comme 'character_set%';' show? – leeyuiwah
oui, j'ai vérifié cela, j'utilise des noms de set utf8mb4 pour chaque connexion – dzthink
UTF8 n'est pas le même que UTF8mb4. Ces deux liens peuvent être utiles (1) http://stackoverflow.com/questions/5078314/isnt-the-size-of-character-in-java-2-bytes (2) https://dev.mysql.com /doc/refman/5.5/en/charset-unicode-utf8mb4.html – leeyuiwah