📄 charsetmapping.java
字号:
INDEX_TO_CHARSET[70] = getJavaEncodingForMysqlEncoding("greek", null); INDEX_TO_CHARSET[71] = getJavaEncodingForMysqlEncoding("hebrew", null); INDEX_TO_CHARSET[72] = getJavaEncodingForMysqlEncoding("hp8", null); INDEX_TO_CHARSET[73] = getJavaEncodingForMysqlEncoding("keybcs2", null); INDEX_TO_CHARSET[74] = getJavaEncodingForMysqlEncoding("koi8r", null); INDEX_TO_CHARSET[75] = getJavaEncodingForMysqlEncoding("koi8ukr", null); INDEX_TO_CHARSET[77] = getJavaEncodingForMysqlEncoding("latin2", null); INDEX_TO_CHARSET[78] = getJavaEncodingForMysqlEncoding("latin5", null); INDEX_TO_CHARSET[79] = getJavaEncodingForMysqlEncoding("latin7", null); INDEX_TO_CHARSET[80] = getJavaEncodingForMysqlEncoding("cp850", null); INDEX_TO_CHARSET[81] = getJavaEncodingForMysqlEncoding("cp852", null); INDEX_TO_CHARSET[82] = getJavaEncodingForMysqlEncoding("swe7", null); INDEX_TO_CHARSET[83] = getJavaEncodingForMysqlEncoding("utf8", null); INDEX_TO_CHARSET[84] = getJavaEncodingForMysqlEncoding("big5", null); INDEX_TO_CHARSET[85] = getJavaEncodingForMysqlEncoding("euckr", null); INDEX_TO_CHARSET[86] = getJavaEncodingForMysqlEncoding("gb2312", null); INDEX_TO_CHARSET[87] = getJavaEncodingForMysqlEncoding("gbk", null); INDEX_TO_CHARSET[88] = getJavaEncodingForMysqlEncoding("sjis", null); INDEX_TO_CHARSET[89] = getJavaEncodingForMysqlEncoding("tis620", null); INDEX_TO_CHARSET[90] = getJavaEncodingForMysqlEncoding("ucs2", null); INDEX_TO_CHARSET[91] = getJavaEncodingForMysqlEncoding("ujis", null); INDEX_TO_CHARSET[92] = getJavaEncodingForMysqlEncoding("geostd8", null); INDEX_TO_CHARSET[93] = getJavaEncodingForMysqlEncoding("geostd8", null); INDEX_TO_CHARSET[94] = getJavaEncodingForMysqlEncoding("latin1", null); INDEX_TO_CHARSET[95] = getJavaEncodingForMysqlEncoding("cp932", null); INDEX_TO_CHARSET[96] = getJavaEncodingForMysqlEncoding("cp932", null); INDEX_TO_CHARSET[97] = getJavaEncodingForMysqlEncoding("eucjpms", null); INDEX_TO_CHARSET[98] = getJavaEncodingForMysqlEncoding("eucjpms", null); } catch (SQLException sqlEx) { // ignore, it won't happen in this case } } final static String getJavaEncodingForMysqlEncoding(String mysqlEncoding, Connection conn) throws SQLException { return (String) MYSQL_TO_JAVA_CHARSET_MAP.get(mysqlEncoding); } final static String getMysqlEncodingForJavaEncoding(String javaEncodingUC, Connection conn) throws SQLException { List mysqlEncodings = (List) CharsetMapping.JAVA_UC_TO_MYSQL_CHARSET_MAP .get(javaEncodingUC); ; if (mysqlEncodings != null) { Iterator iter = mysqlEncodings.iterator(); VersionedStringProperty versionedProp = null; while (iter.hasNext()) { VersionedStringProperty propToCheck = (VersionedStringProperty) iter .next(); if (conn == null) { // Take the first one we get return propToCheck.toString(); } if (versionedProp != null && !versionedProp.preferredValue) { if (versionedProp.majorVersion == propToCheck.majorVersion && versionedProp.minorVersion == propToCheck.minorVersion && versionedProp.subminorVersion == propToCheck.subminorVersion) { return versionedProp.toString(); } } if (propToCheck.isOkayForVersion(conn)) { if (propToCheck.preferredValue) { return propToCheck.toString(); } versionedProp = propToCheck; } else { break; } } if (versionedProp != null) { return versionedProp.toString(); } } return null; } final static int getNumberOfCharsetsConfigured() { return MYSQL_TO_JAVA_CHARSET_MAP.size() / 2; // because we UC every // key } final static boolean isAliasForSjis(String encoding) { return ("SJIS".equalsIgnoreCase(encoding) || "WINDOWS-31J".equalsIgnoreCase(encoding) || "MS932".equalsIgnoreCase(encoding) || "SHIFT_JIS".equalsIgnoreCase(encoding) || "CP943" .equalsIgnoreCase(encoding)); } final static boolean isMultibyteCharset(String javaEncodingName) { String javaEncodingNameUC = javaEncodingName .toUpperCase(Locale.ENGLISH); return MULTIBYTE_CHARSETS.containsKey(javaEncodingNameUC); } private static void populateMapWithKeyValuePairs(String configKey, Map mapToPopulate, boolean addVersionedProperties, boolean addUppercaseKeys) { String javaToMysqlConfig = CHARSET_CONFIG.getProperty(configKey); if (javaToMysqlConfig != null) { List mappings = StringUtils.split(javaToMysqlConfig, ",", true); if (mappings != null) { Iterator mappingsIter = mappings.iterator(); while (mappingsIter.hasNext()) { String aMapping = (String) mappingsIter.next(); List parsedPair = StringUtils.split(aMapping, "=", true); if (parsedPair.size() == 2) { String key = parsedPair.get(0).toString(); String value = parsedPair.get(1).toString(); if (addVersionedProperties) { List versionedProperties = (List) mapToPopulate .get(key); if (versionedProperties == null) { versionedProperties = new ArrayList(); mapToPopulate.put(key, versionedProperties); } VersionedStringProperty verProp = new VersionedStringProperty( value); versionedProperties.add(verProp); if (addUppercaseKeys) { String keyUc = key.toUpperCase(Locale.ENGLISH); versionedProperties = (List) mapToPopulate .get(keyUc); if (versionedProperties == null) { versionedProperties = new ArrayList(); mapToPopulate.put(keyUc, versionedProperties); } versionedProperties.add(verProp); } } else { mapToPopulate.put(key, value); if (addUppercaseKeys) { mapToPopulate.put(key .toUpperCase(Locale.ENGLISH), value); } } } else { throw new RuntimeException( "Syntax error in Charsets.properties " + "resource for token \"" + aMapping + "\"."); } } } else { throw new RuntimeException("Missing/corrupt entry for \"" + configKey + "\" in Charsets.properties."); } } else { throw new RuntimeException("Could not find configuration value " + "\"" + configKey + "\" in Charsets.properties resource"); } }}class VersionedStringProperty { int majorVersion, minorVersion, subminorVersion; boolean preferredValue = false; String propertyInfo; VersionedStringProperty(String property) { property = property.trim(); if (property.startsWith("*")) { property = property.substring(1); preferredValue = true; } if (property.startsWith(">")) { property = property.substring(1); int charPos = 0; for (charPos = 0; charPos < property.length(); charPos++) { char c = property.charAt(charPos); if (!Character.isWhitespace(c) && !Character.isDigit(c) && c != '.') { break; } } String versionInfo = property.substring(0, charPos); List versionParts = StringUtils.split(versionInfo, ".", true); majorVersion = Integer.parseInt(versionParts.get(0).toString()); if (versionParts.size() > 1) { minorVersion = Integer.parseInt(versionParts.get(1).toString()); } else { minorVersion = 0; } if (versionParts.size() > 2) { subminorVersion = Integer.parseInt(versionParts.get(2) .toString()); } else { subminorVersion = 0; } propertyInfo = property.substring(charPos); } else { majorVersion = minorVersion = subminorVersion = 0; propertyInfo = property; } } VersionedStringProperty(String property, int major, int minor, int subminor) { propertyInfo = property; majorVersion = major; minorVersion = minor; subminorVersion = subminor; } boolean isOkayForVersion(Connection conn) throws SQLException { return conn.versionMeetsMinimum(majorVersion, minorVersion, subminorVersion); } public String toString() { return propertyInfo; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -