Posted by lejonsson on August 9, 2009 at 6:56pm
Jag har problem med att få korrekt sortering för de listningar som jag gör med views, Å, Ä och Ö sorteras nämligen som A och O. Vad är det som styr denna sortering och hur får jag ordning på denna problematik?

Comments
Se:
Se: http://groups.drupal.org/node/16482#comment-56625
// Hans Nilsson, Kodamera AB
www.kodamera.se
// Hans Nilsson, Kodamera AB
www.kodamera.se
Enkel lösning
Problemet är att MySQL använder utf8_general_ci istället för utf8_swedish_ci. Enklaste sättet för att få rätt collation är att ange det när man skapar databasen:
där
database_nameär namnet på den databas du skapar. Se också Johan Håkans blogg om saken: Multi languages and sort order.Thomas Barregren – NodeOne
Om databasen redan finns
Om databasen redan finns där:
ALTER DATABASE database_name COLLATE = utf8_swedish_ci;http://dev.mysql.com/doc/refman/5.0/en/alter-database.html
--
Hjälper gärna (pro bono) de som vill lära sig Drupal (fast jag är inte i "Drupal Nirvana" än), vill någon ha professionell hjälp har jag ett företag också.
Ett lösning som faktiskt fungerar på existerande databas
Jag hade precis detta problem med sorteringen i Views. Jag lyckades själv lista ut att det hade att göra med
utf8_general_civsutf8_swedish_ci, men jag innan dess hittade inte denna tråd först när jag bara sökte med några andra sökord, så jag lägger till dessa här för att tråden ska bli enklare att hitta i framtiden:alfabetisk sortering i Views med svenska tecken
Problemet är att råden här är tyvärr meningslösa om man redan har en databas.
Rådet om "enkel lösning" från TBarregren bara fungerar för en ny databas (och när man väl stöter på problemet har man rimligtvis redan en databas) och rådet från chosig (dvs
ALTER DATABASE database_name COLLATE = utf8_swedish_ci;) hjälper inte.Om man kör
ALTER DATABASE database_name COLLATE = utf8_swedish_ci;ändrar man förvissa "collation" (vad heter det på svenska?) på själva databasen, men problemet är att varje tabell och varje kolumn (som kan ha collation) i dessa tabeller fortfarande harutf8_general_ci, så det hjälper inte.Jag har inte hittat något MySQL-kommando för att enkelt ändra allting i databasen från
utf8_general_citillutf8_swedish_ci. Men det finns andra sätt.För att ändra varje kolumn i varje tabell i hela databasen kan man göra en MySQL-dump av hela databasen, göra en sök- och ersätt på
utf8_general_citillutf8_swedish_cioch sen importera databasen igen.Ett annat alternativ är detta skript: Phoca Changing Collation tool
Skriptet låter en fylla i databas, användare, lösenord och vilken collation man önskar och sen kör man det så går det igenom hela databasen, tabell för tabell, kolumn för kolumn och ändrar collation. Man får också en rapport för varje genomförd ändring.
Jag har själv testat skriptet på en Drupal-databas och det fungerade bra. Som vanligt bör man naturligtvis ta en backup på hela databasen innan man försöker sig på något sådant.
(Ett annat bra generellt råd innan man kör okända skript av denna typ är att skumma igenom skriptet innan man kör det, kan man lite PHP kan man oftast få en förståelse för vad det gör, så det inte gör något dumt.)
Hjälper detta mot ä (ä), ö (ö) problemet?
Om man kör "Phoca Changing Collation tool", bör man köra "ALTER DATABASE database_name COLLATE = utf8_swedish_ci" dessutom.
Jag menar det första ändrar i befintlig databas, men den "enkla lösningen" säkerställer framtiden eller har jag missförstått detta?
Vad gör detta egentligen, mitt problem att jag får en massa Ä (ä), ö (ö) osv i en del texter, menyer etc. PÅ vissa ställen går det avhjälpa genom att ta bort "wysiwyg-editorn" men på andra ställen kommer jag inte åt detta. Är ovanstående lösningen för detta problem?
mvh
Anders
Super!
Körde igenom en hel drupaldatabas nu med scriptet ovan och det fungerar nu klockrent.
Stort tack för detta tips som sparade mig massor av jobb! Suveränt!
MOL
Kan någon hjälpa mig med detta?
Hej,
JAg har inte kompetens nog att klara detta själv. KAn någon hjälpa mig - antingen med detaljintruktioner eller handgripligen?
Tack/ Tomas
www.whiplashInfo.se
Fält som börjar med åäö syns inte längre i Views-sortering
Tjenare,
Jag körde igenom min databas med Phoca Changing Collation tool. Funkar fint enligt phpMyAdmin. Men ett fält som börjar med Ö syns nu inte alls när jag använder det fältet som sorteringskriterium i Views. Om jag tar bort sorteringskriteriet så syns det.
Är det ett problem med Views eller kollationeringen?
Edit: Ah, det var att bara 10 fält visades i visningen... sorry.
Klockrent, tack för info,
Klockrent, tack för info, körde precis denna på min installation och vips så började views att sortera rätt!
Nix, det är det första kommandot som phoca-toolen gör så det behövs ej.
"Ett annat alternativ är
"Ett annat alternativ är detta skript: Phoca Changing Collation tool". Tack för tipset AdrianB, Phoca Changing Collation tool funkade utmärkt för mig :)
Morgan | Forweb
Tack!
Jag tackar också väldigt mycket för tipset om Phoca Changing Collation tool och donerar även en slant till detta nyttiga verktyg.
Hi! I have a similar issue
Hi!
I have a similar issue with french and german characters, are there informations in english on how to fix this? Thank you all for you help :)
If you're problem is that
If you're problem is that your sort orders are wrong because of wrong collation on your columns in your tables, then I would recommend the Phoca Changing Collation tool (but as always, backup database first!).
The script lets you enter your database name, user name, password and what collation you want (like
utf8_unicode_ciinstead ofutf8_general_cisince it's more accurate for German, more about MySQL unicode character sets).Thank you so much Adrian,
Thank you so much Adrian, that worked like a charm :)
Skapa databas med rätt kollationering från början
CREATE DATABASE name DEFAULT CHARSET "utf8" COLLATE "utf8_swedish_ci"
Det är ett bra råd om man
Det är ett bra råd om man inte redan har en databas. Men om man sitter med sorteringsproblem i Views så kan jag sätta en slant på att man redan har en databas... ;)
Sitter man med viewsproblem
Sitter man med viewsproblem och har fel i databasen så är det bäst att dumpa och importera till ny databas eftersom mysql kan vara rent ut sagt dum i huvudet när det gäller collations :D
Anser du att det är en bättre
Anser du att det är en bättre lösning än att använda Phoca-skriptet för att bara ändra collation?
Min praktiska erfarenhet är att skriptet fungerar utmärkt för detta ändamål utan några sidoeffekter, men jag är långt ifrån någon expert på MySQL.
Nä, det får du nog bestämma
Nä, det får du nog bestämma själv vilket du gillar bäst. Jag personligen litar inte riktigt på s.k. "tools" som ska fixa saker åt en. Med undantag för mysqls tuning-primer.sh kanske även om inte den heller är felfri.
Jag satt ett bra tag med collationproblem tidigare och testade allt möjligt innan jag gjorde på sättet jag föreslog och blev av med problemen. Sen är jag ju iofs mer eller mindre fanatisk terminalanvändare och skyr mysql-guis och tools som pesten...
Trevlig helg!
Det viktiga är väl att veta
Det viktiga är väl att veta vad verktygen man använder egentligen gör.
Just i fallet med Phoca-skriptet så är det inga konstigheter, det handlar bara om att spara tid genom att slippa gå igenom fält för fält i tabell för tabell och utföra sådant som
ALTER TABLE table MODIFY field COLLATE utf8_swedish_ciosv.Även en terminalräv kan väl gilla att skripta repetitiva uppgifter? :)
Trevlig helg (på er alla!)
I had this problem and solved
I had this problem and solved by only via phpMyAdmin changing the collation in the structure of the title column in the node table from utf8_general_ci to utf8_swedish_ci as in the steps below. If anyone sees a problem with this method, please post here.
Done!
This did not work for me
Changing only "node" table as above, did not solve the problem for me.
I had to dump the DB and change all the tables, read below, to get it to work.
// Göran
Inget nytt, vill egentligen
Inget nytt, vill egentligen bara lägga till att Phoca Changing Collation Tool finns än idag och fungerar finfint. Gjorde precis en genomgång på en databas och efter det sorterade Views ÅÄÖ korrekt.
http://www.phoca.cz/download/category/17-phoca-changing-collation-tool
// Adam
✄-----------------------------------------------------
Adam Evertsson - Came for the code, stayed for the community!
Drupal 8?
Har laddat upp tool_phoca_changing_collation till min Drupal 8 site men lyckas inte köra scriptet. Får meddelandet att sidan inte kan hittas. Detta trots att jag kopierat sökvågen till scriptet: minsite/tool_phoca_changing_collation/index.php för att undvika fel.
Är det någon rättighetsinställning någon stans som jag måste ställa om?
chrotto
Skulle vilja tillägga en viktig detalj gällande "sök och ersätt"
Vid en dumpning av databasen så finns inte "utf8_general_ci" såsom ovanstående trådar förenklat påstår. Det går därför inte att köra ”sök & ersätt”.
Skälet är att "utf8_general_ci" är satt som "default" och att "collate" därför inte behöver vara med i tabellerna eftersom utf8_general_ci utgör "default settings" för alla databasens tabeller.
Det konstiga är att även om man skapar en tom tabell med utf8_swedish_ci så ändrar Drupal databasen till att bli utf8_general_ci när man lägger upp sidan (t o m Drupal 7.53). Jag tycker det är förvånande att det blir så med tanke på att språkvalet är satt som "svenskt" i drupal, när databasen fylls på och tabellerna skapas av Drupal 7.
Jag använder MAC och MAMP PRO (och Sequel Pro) som serverprogramvara.
Om förhållandet, som beskrivs ovan, skiljer sig och är specifikt för OS X med Mamp Pro så får någon gärna tala om det. isf gäller bara nedanstående för sådana förhållanden.
Jag kan inte köra Phoca Changing Collation tool. Varför det inte fungerar vet jag inte, men jag tror det beror på ”default setting” enligt nedanstående beskrivning.
Om man ska byta ut "collate = utf8_general_ci" till "collate = utf8_swedish_ci" genom sök och ersätt i en nerdumpad databas så krävs några moment till samt att man mer i detalj vet hur man ska göra.
Man måste lägga till "collate = utf8_swedish_ci" inne i flera av tabellens rader samt på nedersta raden.
varje tabellrad som initieras med:
varchar(32) NOT NULL DEFAULT
måste ändras till:
varchar(32) CHARACTER SET utf8 NOT NULL DEFAULT
Nedersta raden i varje tabell ser ut så här:
ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8;
ändras till:
ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci
Tänk på att tömma cachen före det att du sparar en dumpning (jag brukar köra "trunk" direkt i DB, det tömmer allt).
// Göran
PHP 7
Kör Drupal 8.3.0 och php 7 och då fungerar inte denna version av scriptet.
Finns det en uppdaterad version av scriptet som man kan använda?
chrotto
Ny version av scriptet
Finns nu enn ny version av scriptet som fungerar med PHP 7.0
http://www.phoca.cz/download/category/1 ... ation-tool
chrotto
Har man drush så kan man
Har man drush så kan man laddar ner följande projekt (kan läggas i ~/.drush)
https://www.drupal.org/project/utf8mb4_convert
Sen kör man bara kommandot:
drush utf8mb4-convert-databases --collation=utf8mb4_swedish_ci
Scriptet kommer gå igenom alla tabeller och dess fält och konvertera det till utf8 med emojis stöd och korrekt sortering enligt svensk standard.