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_CHARSETstatic java.util.Map<java.lang.String,java.lang.Integer>CHARSET_NAME_TO_COLLATION_INDEXstatic com.mysql.cj.MysqlCharset[]COLLATION_INDEX_TO_CHARSETstatic java.lang.String[]COLLATION_INDEX_TO_COLLATION_NAMEstatic java.lang.StringCOLLATION_NOT_DEFINEDstatic intMAP_SIZEstatic intMYSQL_COLLATION_INDEX_binarystatic intMYSQL_COLLATION_INDEX_utf8static java.lang.StringNOT_USEDstatic java.util.Set<java.lang.Integer>UTF8MB4_INDEXES -
Constructor Summary
Constructors Constructor Description CharsetMapping() -
Method Summary
Modifier and Type Method Description static intgetCollationIndexForJavaEncoding(java.lang.String javaEncoding, ServerVersion version)static java.lang.StringgetJavaEncodingForCollationIndex(java.lang.Integer collationIndex)static java.lang.StringgetJavaEncodingForCollationIndex(java.lang.Integer collationIndex, java.lang.String javaEncoding)static java.lang.StringgetJavaEncodingForMysqlCharset(java.lang.String mysqlCharsetName)static java.lang.StringgetJavaEncodingForMysqlCharset(java.lang.String mysqlCharsetName, java.lang.String javaEncoding)MySQL charset could map to several Java encodings.static intgetMblen(java.lang.String charsetName)static java.lang.StringgetMysqlCharsetForJavaEncoding(java.lang.String javaEncoding, ServerVersion version)static java.lang.StringgetMysqlCharsetNameForCollationIndex(java.lang.Integer collationIndex)static intgetNumberOfCharsetsConfigured()static booleanisMultibyteCharset(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)
-