Package com.mysql.cj
Class CharsetMapping
java.lang.Object
com.mysql.cj.CharsetMapping
public class CharsetMapping
extends java.lang.Object
Mapping between MySQL charset names and Java charset names. I've investigated placing these in a .properties file, but unfortunately under most appservers
this complicates configuration because the security policy needs to be changed by the user to allow the driver to read them :(
-
Field Summary
Fields Modifier and Type Field Description static java.util.Map<java.lang.String,com.mysql.cj.MysqlCharset>
CHARSET_NAME_TO_CHARSET
static java.util.Map<java.lang.String,java.lang.Integer>
CHARSET_NAME_TO_COLLATION_INDEX
static com.mysql.cj.MysqlCharset[]
COLLATION_INDEX_TO_CHARSET
static java.lang.String[]
COLLATION_INDEX_TO_COLLATION_NAME
static java.lang.String
COLLATION_NOT_DEFINED
static int
MAP_SIZE
static int
MYSQL_COLLATION_INDEX_binary
static int
MYSQL_COLLATION_INDEX_utf8
static java.lang.String
NOT_USED
static java.util.Set<java.lang.Integer>
UTF8MB4_INDEXES
-
Constructor Summary
Constructors Constructor Description CharsetMapping()
-
Method Summary
Modifier and Type Method Description static int
getCollationIndexForJavaEncoding(java.lang.String javaEncoding, ServerVersion version)
static java.lang.String
getJavaEncodingForCollationIndex(java.lang.Integer collationIndex)
static java.lang.String
getJavaEncodingForCollationIndex(java.lang.Integer collationIndex, java.lang.String javaEncoding)
static java.lang.String
getJavaEncodingForMysqlCharset(java.lang.String mysqlCharsetName)
static java.lang.String
getJavaEncodingForMysqlCharset(java.lang.String mysqlCharsetName, java.lang.String javaEncoding)
MySQL charset could map to several Java encodings.static int
getMblen(java.lang.String charsetName)
static java.lang.String
getMysqlCharsetForJavaEncoding(java.lang.String javaEncoding, ServerVersion version)
static java.lang.String
getMysqlCharsetNameForCollationIndex(java.lang.Integer collationIndex)
static int
getNumberOfCharsetsConfigured()
static boolean
isMultibyteCharset(java.lang.String javaEncodingName)
Does the character set contain multi-byte encoded characters.
-
Field Details
-
MAP_SIZE
public static final int MAP_SIZE- See Also:
- Constant Field Values
-
COLLATION_INDEX_TO_COLLATION_NAME
public static final java.lang.String[] COLLATION_INDEX_TO_COLLATION_NAME -
COLLATION_INDEX_TO_CHARSET
public static final com.mysql.cj.MysqlCharset[] COLLATION_INDEX_TO_CHARSET -
CHARSET_NAME_TO_CHARSET
public static final java.util.Map<java.lang.String,com.mysql.cj.MysqlCharset> CHARSET_NAME_TO_CHARSET -
CHARSET_NAME_TO_COLLATION_INDEX
public static final java.util.Map<java.lang.String,java.lang.Integer> CHARSET_NAME_TO_COLLATION_INDEX -
UTF8MB4_INDEXES
public static final java.util.Set<java.lang.Integer> UTF8MB4_INDEXES -
NOT_USED
public static final java.lang.String NOT_USED- See Also:
- Constant Field Values
-
COLLATION_NOT_DEFINED
public static final java.lang.String COLLATION_NOT_DEFINED- See Also:
- Constant Field Values
-
MYSQL_COLLATION_INDEX_utf8
public static final int MYSQL_COLLATION_INDEX_utf8- See Also:
- Constant Field Values
-
MYSQL_COLLATION_INDEX_binary
public static final int MYSQL_COLLATION_INDEX_binary- See Also:
- Constant Field Values
-
-
Constructor Details
-
CharsetMapping
public CharsetMapping()
-
-
Method Details
-
getMysqlCharsetForJavaEncoding
public static final java.lang.String getMysqlCharsetForJavaEncoding(java.lang.String javaEncoding, ServerVersion version) -
getCollationIndexForJavaEncoding
public static int getCollationIndexForJavaEncoding(java.lang.String javaEncoding, ServerVersion version) -
getMysqlCharsetNameForCollationIndex
public static java.lang.String getMysqlCharsetNameForCollationIndex(java.lang.Integer collationIndex) -
getJavaEncodingForMysqlCharset
public static java.lang.String getJavaEncodingForMysqlCharset(java.lang.String mysqlCharsetName, java.lang.String javaEncoding)MySQL charset could map to several Java encodings. So here we choose the one according to next rules:- if there is no static mapping for this charset then return javaEncoding value as is because this could be a custom charset for example
- if static mapping exists and javaEncoding equals to one of Java encoding canonical names or aliases available for this mapping then javaEncoding value as is; this is required when result should match to connection encoding, for example if connection encoding is Cp943 we must avoid getting SHIFT_JIS for sjis mysql charset
- if static mapping exists and javaEncoding doesn't match any Java encoding canonical names or aliases available for this mapping then return default Java encoding (the first in mapping list)
- Parameters:
mysqlCharsetName
- MySQL charset namejavaEncoding
- fall-back java encoding name- Returns:
- java encoding name
-
getJavaEncodingForMysqlCharset
public static java.lang.String getJavaEncodingForMysqlCharset(java.lang.String mysqlCharsetName) -
getJavaEncodingForCollationIndex
public static java.lang.String getJavaEncodingForCollationIndex(java.lang.Integer collationIndex, java.lang.String javaEncoding) -
getJavaEncodingForCollationIndex
public static java.lang.String getJavaEncodingForCollationIndex(java.lang.Integer collationIndex) -
getNumberOfCharsetsConfigured
public static final int getNumberOfCharsetsConfigured() -
isMultibyteCharset
public static final boolean isMultibyteCharset(java.lang.String javaEncodingName)Does the character set contain multi-byte encoded characters.- Parameters:
javaEncodingName
- java encoding name- Returns:
- true if the character set contains multi-byte encoded characters.
-
getMblen
public static int getMblen(java.lang.String charsetName)
-