Sto costruendo un sito Web in lingua tedesca, quindi userò caratteri come ä, ü, ß
ecc. Quindi quali sono i tuoi consigli?Quali sono le migliori regole di confronto MySQL per la lingua tedesca
risposta
Come il set di caratteri, se è possibile, sicuramente UTF-8.
Come la raccolta - questo è un po 'brutto per le lingue con caratteri speciali. Esistono vari tipi di regole di confronto. Tutti possono memorizzare tutte le dieresi e altri personaggi, ma differiscono nel modo in cui trattano dieresi nei confronti, vale a dire se
u = ü
è vero o falso; e nell'ordinamento (dove negli alfabeti gli Umlaut si trovano nell'ordine di ordinamento).
Per farla breve, la cosa migliore è sia
utf8_unicode_ci
Permette di caso Ricerche insensitive; Tratta ß
come ss
e utilizza l'ordinamento DIN-1. Purtroppo, come tutte le regole di confronto Unicode non binari, tratta lo u = ü
che è un terribile fastidio perché la ricerca di "Muller" restituirà anche "Müller". Dovrai ovviare a questo impostando una collazione basata su Umlaut in tempo reale.
o utf8_bin
Questa raccolta non si ha il problema u = ü
ma solo caso le ricerche sensibili sono possibili.
Non sono completamente sicuro se ci sono altri effetti collaterali sull'uso della collazione binaria; Ho fatto una domanda su questo here.
This mySQL manual page dà una buona panoramica sulle varie regole di confronto e le conseguenze che ne derivano in uso quotidiano.
Here è una panoramica generale sulle regole di confronto disponibili in MySQL.
utf-8-general-ci
o utf-8-unicode-ci
.
conoscere la differenza: UTF-8: General? Bin? Unicode?
Penso che tu intenda "utf8_general_ci' o" utf8_unicode_ci'. –
Per sostenere la completa UTF-8 di serie si deve utilizzare il set di caratteri utf8mb4
e le regole di confronto utf8mb4_unicode_ci
in MySQL!
Nota: MySQL supporta solo caratteri da 1 a 3 byte quando si utilizza il cosiddetto set di caratteri utf8
! Questo è il motivo per cui i moderni Emojis non sono supportati in quanto utilizzano 4 byte!
L'unico modo per supportare pienamente lo standard UTF-8 è quello di cambiare il set di caratteri e collazione di TUTTI tavoli e del banca dati stesso per utf8mb4
e utf8mb4_unicode_ci
. Inoltre, la connessione del database deve utilizzare anche utf8mb4.
Il server MySQL deve utilizzare utf8mb4 come set di caratteri di default che può essere configurato manualmente nella /etc/mysql/conf.d/mysql.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
# character-set-client-handshake = FALSE ## better not set this!
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
tabelle esistenti possono essere migrati utf8mb4 utilizzando la seguente istruzione SQL :
ALTER TABLE <table-name> CONVERT TO
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Nota:
- Per assicurarsi che tutte le giunzioni tra tavolo-colonne non saranno rallentato dalle codifiche charset TUTTE le tabelle devono essere cambiate!
- Poiché la lunghezza di un indice è limitato in MySQL, il numero totale di caratteri per indice di riga devono essere moltiplicati per 4 byte e devono essere inferiori a 3072
Quando l'opzione di configurazione innodb_large_prefix è abilitato, questo limite di lunghezza viene aumentato a 3072 byte, per le tabelle InnoDB che utilizzano i formati di riga DYNAMIC e COMPRESSED.
Per cambiare il set di caratteri e confronto predefinito della base di dati, eseguire questo comando:
ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Dal utf8mb4 è completamente compatibile con utf8, dovrebbe avvenire senza mojibake o altre forme di perdita di dati.
- 1. quali lingue sono supportate nelle regole di confronto?
- 2. Quali sono le migliori caratteristiche di Scala?
- 3. Quali sono le migliori alternative a Lucene?
- 4. Quali sono le regole di ritrasmissione per TCP?
- 5. Quali sono le migliori pratiche MEF?
- 6. Quali sono le regole per l'internamento delle stringhe di cpython?
- 7. Quali sono le migliori pratiche per velocizzare l'esecuzione dell'applicazione lucida?
- 8. Quali sono le migliori pratiche per crittografare le password memorizzate in MySql usando PhP?
- 9. Perché le regole di confronto predefinite di MySQL latin1_swedish_ci?
- 10. Quali regole di confronto utilizza Evernote per i tag?
- 11. Quali sono i modi migliori per bloccare le app Android?
- 12. Quali sono le migliori pratiche per l'auto aggiornamento di applicazioni PHP + MySQL?
- 13. Quali sono le migliori pratiche per l'interazione client-server?
- 14. quali sono le regole per gli spazi in swift
- 15. Quali sono le regole per gestire i metodi ereditati dall'omonimo?
- 16. Quali sono le migliori pratiche per mantenere uno schema di database Mysql in modo multipiattaforma?
- 17. Quali sono le regole per confrontare gli array numpy usando ==?
- 18. Quali sono le migliori risorse per imparare Ant?
- 19. Quali sono le migliori pratiche per i depositi Kiln?
- 20. Quali sono le migliori pratiche per utilizzare AngularJS con Django
- 21. Esiste una biblioteca gratuita per l'analisi morfologica della lingua tedesca?
- 22. Quali sono le altre soluzioni per la seguente progettazione di regole?
- 23. Quali sono le prestazioni migliori per il recupero dei risultati MySQL EAV come tabella relazionale
- 24. Quali sono le regole di pluralizzazione Mongoose (Nodejs)?
- 25. Quali sono i migliori componenti di Boost?
- 26. Quali sono le migliori pratiche di gestione della memoria Java?
- 27. Quali sono le migliori API di geo coding disponibili gratuitamente?
- 28. Quali varianti di stringa inversa sono migliori?
- 29. Quali sono le regole per la scelta tra le funzioni del modello sovraccarico?
- 30. Quali sono le migliori pratiche per la distribuzione di un'applicazione Catalyst su un server di produzione?
So che questo è super vecchio, ma ... Sto cercando di applicare una collazione utf8 simile a quello che hai sopra. Tuttavia, quando si utilizza utf8_unicode_ci il carattere 'é' viene codificato in '?'. Hai qualche idea del perché? Pensavo che utf8 avesse una rappresentazione per ogni personaggio. – wright8191
@Pekka, poiché 'utf8' è imperfetto (non vero unicode), perché lo raccomandi su' utf8mb4'? – Pacerier