文件首頁
MySQL Connector/J 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 1.2Mb
PDF (A4) - 1.2Mb


MySQL Connector/J 開發人員指南  /  Connector/J 參考  /  使用字元集和 Unicode

6.7 使用字元集和 Unicode

從 JDBC 驅動程式傳送到伺服器的所有字串,都會自動從原生 Java Unicode 格式轉換為連線的字元編碼,包括使用 Statement.execute()Statement.executeUpdate()Statement.executeQuery() 傳送的所有查詢,以及所有 PreparedStatementCallableStatement 參數,但不包括使用下列方法設定的參數

  • setBlob()

  • setBytes()

  • setClob()

  • setNClob()

  • setAsciiStream()

  • setBinaryStream()

  • setCharacterStream()

  • setNCharacterStream()

  • setUnicodeStream()

每個連線的編碼數量

Connector/J 支援用戶端和伺服器之間的單一字元編碼,以及伺服器在 ResultSets 中傳回給用戶端的資料的任意字元編碼數量。

設定字元編碼

針對 Connector/J 8.0.25 及更早版本: 用戶端和伺服器之間的字元編碼會在連線時自動偵測 (前提是未設定 Connector/J 連線屬性 characterEncodingconnectionCollation)。伺服器上的編碼是使用系統變數 character_set_server 指定 (如需更多資訊,請參閱 伺服器字元集和定序),而驅動程式會自動使用該編碼。例如,若要將 4 位元組 UTF-8 字元集與 Connector/J 搭配使用,請將 MySQL 伺服器設定為 character_set_server=utf8mb4,並將 characterEncodingconnectionCollation 從 Connector/J 連線字串中省略。然後,Connector/J 將自動偵測 UTF-8 設定。若要覆寫用戶端上自動偵測到的編碼,請在連線至伺服器的 URL 中使用 characterEncoding 屬性。

針對 Connector/J 8.0.26 及更新版本: 在連線初始化期間有兩個階段會設定字元編碼和定序。

自訂字元集和定序

若要支援在伺服器上使用自訂字元集和定序,請將 Connector/J 連線屬性 detectCustomCollations 設定為 true,並提供自訂字元集和 Java 字元編碼之間的對應,方法是提供以逗號分隔的 custom_charset:java_encoding 配對清單 (例如: customCharsetMapping=charset1:UTF-8,charset2:Cp1252) 的 customCharsetMapping 連線屬性。

MySQL 到 Java 編碼名稱轉譯

指定字元編碼時,請使用 Java 樣式的名稱。下表列出 MySQL 字元集名稱及其對應的 Java 樣式名稱

表 6.21 MySQL 到 Java 編碼名稱轉譯

MySQL 字元集名稱 Java 樣式字元編碼名稱
ascii US-ASCII
big5 Big5
gbk GBK
sjis SJIS 或 Cp932
cp932 Cp932 或 MS932
gb2312 EUC_CN
ujis EUC_JP
euckr EUC_KR
latin1 Cp1252
latin2 ISO8859_2
greek ISO8859_7
hebrew ISO8859_8
cp866 Cp866
tis620 TIS620
cp1250 Cp1250
cp1251 Cp1251
cp1257 Cp1257
macroman MacRoman
macce MacCentralEurope
utf8mb4 UTF-8
ucs2 UnicodeBig

注意事項

  • 當在連線字串中將 UTF-8 用於 characterEncoding 時,它會對應至 MySQL 字元集名稱 utf8mb4

  • 如果也同時設定了連線選項 connectionCollationcharacterEncoding,且兩者不相容,則 characterEncoding 會被覆寫為對應於 connectionCollation 的編碼。

  • 因為沒有 Java 樣式的字元集名稱可供您與連線選項 charaterEncoding 搭配使用,所以使用 utf8mb3 作為連線字元集的唯一方法是,將 utf8mb3 定序 (例如,utf8_general_ci) 用於連線選項 connectionCollation,這會強制使用 utf8mb3 字元集,如最後一個項目符號所述。

警告

請勿在 Connector/J 中發出查詢 SET NAMES,因為驅動程式不會偵測到字元集已透過查詢變更,並會繼續使用首次設定連線時設定的字元集。