Nejprve se ujistěte, že je váš server správně nakonfigurován pro použití utf8mb4. Podle tohoto výukového programu , musíte do souboru my.cnf (nebo my.ini, pokud používáte Windows) přidat následující:
[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
To říká serveru MySQL, aby používal utf8mb4 a ignoroval jakékoli kódování nastavené klientem.
Poté jsem nemusel v Talendu nastavovat žádné další vlastnosti připojení MySQL. Tento dotaz jsem provedl v Talendu, abych zkontroloval jím nastavené kódování:
SHOW VARIABLES
WHERE Variable_name LIKE 'character\\_set\\_%' OR Variable_name LIKE 'collation%'
A vrátilo se:
|=-----------------------+-----------------=|
|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|
'------------------------+------------------'
Následující test pro vložení hromady hoven funguje:
Aktualizovat
Pomocí nativních komponent MySQL v Talendu 6.3.1 získáte mysql-connector-java-5.1.30-bin.jar
, který má automaticky detekovat utf8mb4 používaný serverem, ale z nějakého důvodu (chyba?) to nedělá.
Přešel jsem na používání komponent JDBC a stáhl jsem si nejnovější mysql konektor
(mysql-connector-java-5.1.45-bin.jar
), zprovoznil jsem to nastavením těchto dalších parametrů na tJDBCConnection
komponenta :
useUnicode=true&characterEncoding=utf-8
(i když specifikuji utf-8, dokument říká, že to bude považovat za utf8mb4)
Moje práce teď vypadá takto: