mysql JDBC exception 異常信息中文亂碼問題

mysql jdbc 鏈接數據庫,當產生SQL異常,包含中文信息時,異常信息中文亂碼。mysql驅動版本 mysql

<version>5.1.40</version>

產生這個提問題的主要緣由是驅動對異常處理信息有BUG(MYSQL,JVM JAVA文件等全部的編碼都一一致),MYSQL驅動在處理編碼時使用CharsetMapping類獲取編碼,MYSQL語言爲ENGLISH,自動從:sql

Map<String, String> tempMap = new HashMap<String, String>();
tempMap.put("czech", "latin2");
tempMap.put("danish", "latin1");
tempMap.put("dutch", "latin1");
tempMap.put("english", "latin1");
tempMap.put("estonian", "latin7");
tempMap.put("french", "latin1");
tempMap.put("german", "latin1");
tempMap.put("greek", "greek");
tempMap.put("hungarian", "latin2");
tempMap.put("italian", "latin1");
tempMap.put("japanese", "ujis");
tempMap.put("japanese-sjis", "sjis");
tempMap.put("korean", "euckr");
tempMap.put("norwegian", "latin1");
tempMap.put("norwegian-ny", "latin1");
tempMap.put("polish", "latin2");
tempMap.put("portuguese", "latin1");
tempMap.put("romanian", "latin2");
tempMap.put("russian", "koi8r");
tempMap.put("serbian", "cp1250");
tempMap.put("slovak", "latin2");
tempMap.put("spanish", "latin1");
tempMap.put("swedish", "latin1");
tempMap.put("ukrainian", "koi8u");
ERROR_MESSAGE_FILE_TO_MYSQL_CHARSET = Collections.unmodifiableMap(tempMap);

ERROR_MESSAGE_FILE_TO_MYSQL_CHARSET 中獲取編碼,獲取後爲latin1,就沒有UTF8 或GBK因此報錯,把ENGLISHI對應的latin1 修改成UTF-8解決。數據庫

相關文章
相關標籤/搜索