[英]java write unreadable code into mysql with utf8mb4
我遇到了一個很奇怪的問題。 我有兩個相同的字符串,分別是chinse“君山”,一個來自kafka,一個來自mysql字段(utf8mb4)。 我將兩個字符串寫入mysql的另一個表中,該字段也是utf8mb4編碼的,來自kafka的一個變成了不可閱讀的代碼“ ??”,另一個還可以!
然后我用以下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));
}
我得到如下輸出:
oldName:541b5c71
-----------------------------------------
newName:15a17af515a12a12a
我檢查了unicode表,中文文本“君”應為“ 0x541b”,“山”應為“ 0x5c71”。 因此,oldName是有意義的,我不知道newName輸出的代碼是什么,更難理解的是oldName變成了不可讀的代碼“ ??” 我將其保存到mysql后,請newName很好。
順便說一句,我使用spring + mybatis框架來操作mysql
只需在控制面板中更改服務器計算機的系統區域設置即可。
這里有一個視頻,展示了如何更改它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.