webForumDet fria alternativet

MySQL sortering UTF8, åäö, collate etc. (uttjatat jag vet)

Databaser & SQL

4 svar · 1 569 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

hej hopp, hör kommer ännu en post i det uttjatade ämnet sortering med svenska tecken, collate etc.

Databasen är MySQL 5.0.24a med tabelltypen MyISAM på Bineros webbhotell.

Jag kör:

SET NAMES 'utf8' COLLATE 'utf8_swedish_ci';
show variables like 'coll%';
collation_connection utf8_swedish_ci
collation_database   utf8_swedish_ci
collation_server     [B]latin1_swedish_ci[/B]
select collation('hello');
collation('hello')   utf8_swedish_ci
Select id, namn FROM t1 ORDER BY namn ASC;
id    namn
70    Kläder
14    Klockor
16    Kosmetik
Select id, namn FROM t1 ORDER BY namn COLLATE utf8_swedish_ci ASC;
id    namn
70    Kläder
14    Klockor
16    Kosmetik

På websidan kör jag sedan <meta charset="UTF-8" /> för att visa alla åäö bl. a. korrekt, problemet är vid sortering av data samt where/like-satser där namn börjar med åäö, där dessa sorteras innan bokstaven A.

Rent konkret känns det som att sorteringen antingen läser bokstaven ä (ä) som två spearata tecken och sorterar in à före A, eller att den använder sig av "fel" collation när den gör sorteringen, t.ex. utf8_unicode_ci där Ä ska sorteras innan A (tror mig ha läst detta nånstans iaf)

Någon som har några bra förslag på åtgärd?

Medlem sedan aug. 20068 090 inlägg
#2

För det första är inte <meta charset="UTF-8" /> rätt tag. Den bör antagligen se ut så här:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

För det andra så räcker det inte med att ha charset definerat i head. Du måste också spara ner html-sidan som utf-8.

Alltså: Öppna sidan i den redigerare du använder och "spara som..." eller vad det kan vara i ditt fall. Du borde kunna hitta ett val mellan olika charset där.

Medlem sedan jan. 20011 213 inlägg
#3

Tack för ditt svar, sidorna sparas redan som UTF-8.

<meta charset="UTF-8" /> <-- HTML5
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <-- HTML4 etc.

Sorteringsproblematiken uppstår alltså även när jag kör MySQL klienter, har testat flera olika

Medlem sedan aug. 20068 090 inlägg
#4

G8 skrev:

Tack för ditt svar, sidorna sparas redan som UTF-8.

<meta charset="UTF-8" /> <-- HTML5
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <-- HTML4 etc.

Sorteringsproblematiken uppstår alltså även när jag kör MySQL klienter, har testat flera olika

OK.

Men du har ju
collation_server latin1_swedish_ci

Medlem sedan jan. 20011 213 inlägg
#5

Japp, men collation_server kan jag inte ändra, och det bör, mig veterligen, inte spela någon roll då både collation_connection och collation_database är utf8_swedish_ci.
Annars skulle det ju innebära att man endast kan göra samma collation som serverns default är satt till, vilket inte låter troligt.

Dessutom är både tabellen och kolumnen "namn" satta till utf8_swedish_ci vilket gör mig smått förbryllad över varför sorteringen blir som den blir.

255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)