Først skal du sikre dig, at din server er korrekt konfigureret til at bruge utf8mb4. Ved at følge denne tutorial , skal du tilføje følgende til din my.cnf (eller my.ini, hvis du er på Windows):
[client]default-character-set =utf8mb4[mysql]default-character-set =utf8mb4[mysqld]character-set-client-handshake =FALSEcharacter-set-server =utf8mb4collation-server =utf8mb4_unicode_ci kode>
Det fortæller MySQL-serveren at bruge utf8mb4 og ignorere enhver kodning, der er indstillet af klienten.
Derefter behøvede jeg ikke at indstille nogen yderligere egenskaber på MySQL-forbindelsen i Talend. Jeg har udført denne forespørgsel i Talend for at kontrollere kodningen indstillet af den :
VIS VARIABLER HVOR Variable_name LIKE 'character\\_set\\_%' ELLER Variable_name LIKE 'collation%'
Og det returnerede:
|=------------------------------+----------------=||Variable_Name |Værdi ||=-----------------------------+-----------------=||character_set_client |utf8mb4 ||character_set_connection|utf8mb4 ||character_set_database |utf8mb4 ||character_set_filesystem|binært ||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|'----------------------------- -+------------------------'
Følgende test til at indsætte en bunke af afføring virker:
Opdater
Ved at bruge native MySQL-komponenter i Talend 6.3.1 får du mysql-connector-java-5.1.30-bin.jar
, som formodes automatisk at detektere den utf8mb4, der bruges af serveren, men af en eller anden grund (bug?) gør den det ikke.
Jeg skiftede til at bruge JDBC-komponenter og downloadede den seneste mysql connector
(mysql-connector-java-5.1.45-bin.jar
), Jeg fik det til at fungere ved at indstille disse yderligere parametre på tJDBCConnection
komponent:
useUnicode=true&characterEncoding=utf-8
(selvom jeg angiver utf-8, siger lægen, at den vil behandle det som utf8mb4)
Sådan ser mit job ud nu :