2014-04-22 18 views
7

Sto cercando di inserire del testo in un campo nel mio database e ho un problema con le emoji. Quello che succede è che se non metto l'url della mia connessione su jdbc:mysql://localhost:3306/MyDatabase?characterEncoding=UTF-8 allora il server memorizzerà gli emojis bene ma memorizzerà anche caratteri non latini come punti interrogativi.Valore stringa errato senza "? CharacterEncoding = UTF-8"

Ora, se ho impostato il mio URL di collegamento del genere, allora il server non sarà come le emoji e di uscita la volontà di errore:

Incorrect string value: '\xF0\x9F\x98\xB1\xF0\x9F...' for column 'fullTweet' at row 1

ho fatto tutti i passi necessari per la compatibilità utf8 sul mio server locale :

  1. ho aggiunto la linea character-set-server=utf8mb4-my.ini
  2. la query show variables like 'character_set_server' rendimenti utf8mb4
  3. Creo il mio database con la query CREATE DATABASE twitter DEFAULT CHARACTER SET utf8mb4
  4. e di default tutte le mie tabelle e campi delle mie tabelle utilizza utf8mb4_general_ci (come posso vedere in phpmyadmin)

Che cosa manca? Sono sicuro di aver fatto tutti i passi necessari e ancora non riesco a farlo funzionare, o memorizzerà solo caratteri latini o non memorizzerà emoji.


Ulteriori informazioni da una domanda precedente di mine:

posso inserire manualmente l'emoji nel database e mostrano esattamente come mostrano nel debugger (come caselle). Ho funzionare questa domanda:

INSERT INTO `tweets`(`id`, `createdAt`, `screenName`, `fullTweet`, `editedTweet`) VALUES (450,"1994-12-19","john",_utf8mb4 x'F09F98B1',_utf8mb4 x'F09F98B1') 

e questo è ciò che la riga della tabella si presenta come:

1

risposta

0

Prova questa ->

convert('string' using utf8) 

o

convert('string',char) 

oppure

convert('string' using latin1) 

o utilizzare qualunque sia la codifica dei caratteri che è stata impostata nella tabella. Il codice che ho fornito sono funzioni mysql.

+0

Non riesco a trovare alcuna di tali funzioni, esse non vengono riconosciute. –

1

Questo è spiegato in dettaglio nella How to support full Unicode in MySQL databases · Mathias Bynens Fondamentalmente, penso che si dimentica questo (da Step 5)

[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 

Quindi, si dovrebbe rimuovere characterEncoding=UTF-8 dal tuo URL. Verificare inoltre che sia disponibile MySQL Connector/J 5.1.13+ (vedere JDBC url for MySQL configuration to use utf8 character encoding)

Problemi correlati