Collatie is alleen van invloed op het sorteren van tekst, het heeft geen effect op de werkelijke tekenset van opgeslagen gegevens.
Ik zou deze configuratie aanbevelen:
-
Stel de tekenset voor de hele DB in alleen, zodat u deze niet voor elke tafel afzonderlijk hoeft in te stellen. Tekenset wordt overgenomen van DB naar tabellen naar kolommen. Gebruik
utf8als de tekenset. -
Stel de tekenset voor de DB-verbinding in . Voer deze query's uit nadat u verbinding heeft gemaakt met de database:
SET CHARACTER SET 'utf8' SET NAMES 'utf8' -
Stel de tekenset voor de pagina in , met behulp van HTTP-header en/of HTML-metatag. Een van deze is genoeg. Gebruik
utf-8als decharset.
Dit zou genoeg moeten zijn.
Als u de juiste sortering van Spaanse tekenreeksen wilt hebben, stelt u sortering in voor de hele database. utf8_spanish_ci zou moeten werken (ci betekent Hoofdlettergevoelig ). Zonder de juiste sortering zouden Spaanse tekens met accenten altijd als laatste worden gesorteerd.
Opmerking :het is mogelijk dat de tekenset van gegevens die u al in een tabel hebt, is verbroken, omdat uw tekensetconfiguratie eerder verkeerd was. U moet het eerst controleren met een DB-client om dit geval uit te sluiten. Als het defect is, voert u uw gegevens opnieuw in met de juiste tekensetconfiguratie.
Hoe tekenset werk in een database
-
objecten heb een tekenset attribuut, dat expliciet kan worden ingesteld of wordt overgenomen (server> database> tabel> kolom), dus de beste optie is om het voor de hele database in te stellen
-
clientverbinding heeft ook een tekenset attribuut en het vertelt de database in welke codering u de gegevens verzendt
Als de tekensets van de clientverbinding en het doelobject verschillen, worden de gegevens die u naar de database verzendt automatisch geconverteerd van de tekenset van de verbinding naar de tekenset van het object.
Dus als je bijvoorbeeld de gegevens in utf8 . hebt , maar klantverbinding ingesteld op latin1 , zal de database de gegevens breken, omdat het zal proberen om utf8 . te converteren alsof het latin1 . is .