10bet网址
连接器和api手册
下载本手册

3.5.7使用字符集和Unicode

从JDBC驱动程序发送到服务器的所有字符串都会自动从本机Java Unicode格式转换为客户端字符编码,包括使用该格式发送的所有查询Statement.execute ()Statement.executeUpdate (),Statement.executeQuery ()和所有人一样PreparedStatement而且CallableStatement参数,不包括参数设置使用setBytes ()setBinaryStream ()setAsciiStream ()setUnicodeStream (),setBlob ()

每个连接的编码数

Connector/J支持客户端和服务器之间的单一字符编码,以及服务器返回给客户端的任意数量的字符编码结果集

设置字符编码

客户端和服务器之间的字符编码在连接时自动检测(假设Connector/J连接属性characterEncoding而且connectionCollation没有设置)。您可以使用系统变量在服务器上指定编码character_set_server(有关更多信息,请参见服务器字符集和排序规则).驱动程序自动使用服务器指定的编码。例如,使用4字节UTF-8字符集使用Connector/J,配置MySQL服务器character_set_server = utf8mb4,然后离开characterEncoding而且connectionCollationConnector/J连接字符串。Connector/J将自动检测UTF-8设置。

要重写客户端上自动检测到的编码,请使用characterEncoding属性在到服务器的连接URL中。在指定字符编码时使用java样式的名称。下表列出了MySQL字符集名称及其对应的java样式名称:

表3.6 MySQL到Java的编码名称转换

MySQL字符集名称 java风格的字符编码名称
美国信息交换标准代码 us - ascii
繁体 繁体
gbk GBK
sjis SJIS或Cp932
cp932 Cp932或MS932
gb2312 EUC_CN
里头 EUC_JP
euckr EUC_KR
latin1 Cp1252
latin2 ISO8859_2
希腊 ISO8859_7
希伯来语 ISO8859_8
cp866 Cp866
tis620 TIS620
cp1250 Cp1250
cp1251 Cp1251
cp1257 Cp1257
macroman MacRoman
macce MacCentralEurope

适用于8.0.12及更早版本use utf8

适用于8.0.13及更高版本utf8mb4

utf - 8
ucs2 UnicodeBig

笔记

对于连接器/J 8.0.12及更早版本:为了使用utf8mb4字符集的连接,服务器必须配置character_set_server = utf8mb4;如果不是这样,当utf - 8用于characterEncoding在连接字符串中,它将映射到MySQL字符集名称use utf8的别名utf8mb3

对于Connector/J 8.0.13及更高版本:

  • utf - 8用于characterEncoding在连接字符串中,它映射到MySQL字符集名称utf8mb4

  • 如果连接选项connectionCollation也被放置在characterEncoding与之不相容,characterEncoding是否会被对应的编码覆盖connectionCollation

  • 因为没有java风格的字符集名称utfmb3可以和连接选项一起使用charaterEncoding,只有这样才能使用utf8mb3作为您的连接字符集是要使用的utf8mb3排序(例如,utf8_general_ci)的连接选项connectionCollation,将强制执行utf8mb3要使用的字符集,正如在最后一个项目中解释的那样。

警告

不发出查询组名称使用Connector/J,因为驱动程序不会检测到字符集已被查询更改,并且将继续使用连接第一次建立时配置的字符集。