Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

pengaturan utf8mb4 untuk talenta - tidak berfungsi

Pertama, pastikan server Anda dikonfigurasi dengan benar untuk menggunakan utf8mb4. Ikuti tutorial ini , Anda perlu menambahkan yang berikut ini ke my.cnf Anda (atau my.ini jika Anda menggunakan Windows):

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Itu memberitahu server MySQL untuk menggunakan utf8mb4 dan mengabaikan encoding apa pun yang ditetapkan oleh klien.
Setelah itu, saya tidak perlu mengatur properti tambahan apa pun pada koneksi MySQL di Talend. Saya telah menjalankan kueri ini di Talend untuk memeriksa penyandian yang ditetapkan olehnya :

SHOW VARIABLES 
WHERE Variable_name LIKE 'character\\_set\\_%' OR Variable_name LIKE 'collation%'

Dan itu kembali:

|=-----------------------+-----------------=|
|Variable_Name           |Value             |
|=-----------------------+-----------------=|
|character_set_client    |utf8mb4           |
|character_set_connection|utf8mb4           |
|character_set_database  |utf8mb4           |
|character_set_filesystem|binary            |
|character_set_results   |                  |
|character_set_server    |utf8mb4           |
|character_set_system    |utf8              |
|collation_connection    |utf8mb4_unicode_ci|
|collation_database      |utf8mb4_unicode_ci|
|collation_server        |utf8mb4_unicode_ci|
'------------------------+------------------'

Tes berikut untuk menyisipkan tumpukan kotoran berfungsi:

Perbarui

Menggunakan komponen MySQL asli di Talend 6.3.1, Anda mendapatkan mysql-connector-java-5.1.30-bin.jar , yang seharusnya secara otomatis mendeteksi utf8mb4 yang digunakan oleh server, tetapi untuk beberapa alasan (bug?) tidak melakukan itu.
Saya beralih menggunakan komponen JDBC, dan mengunduh mysql terbaru konektor (mysql-connector-java-5.1.45-bin.jar ), saya membuatnya bekerja dengan mengatur parameter tambahan ini pada tJDBCConnection komponen :

useUnicode=true&characterEncoding=utf-8

(bahkan jika saya menentukan utf-8, dokumen mengatakan akan memperlakukannya sebagai utf8mb4)

Inilah pekerjaan saya sekarang :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara terhubung ke server mysql menggunakan command prompt:error

  2. PHP - Cara memverifikasi catatan yang berhasil dihapus

  3. Buat array di PHP dari mysql

  4. ROW_NUMBER di SQL – Pilih Contoh Teratas di SQL dan SQL Server

  5. Terhubung ke database MySQL dengan C# sebagai pengguna non-root?