Avatar billede Mik2000 Professor
11. august 2014 - 23:07 Der er 6 kommentarer og
1 løsning

UTF-8 i filer og database

Hej

Jeg har et par spørgsmål til charset.

Jeg har gemt alle mine filer som UTF-8 without bom

Mit charset i filerne er sat til: <meta charset="utf-8">

Til databasen bruger jeg pt. $dbconnection->exec("set names utf8"); der hvor jeg laver min PDO connection.
Jeg bruger version af php som pt. er under 5.3.6 så jeg ikke kan lave det direkte i kaldet/connection.
Jeg benytter en MySQL database

Mine spørgsmål er:
1: Hvad skal jeg vælge mht. database - her er jo både utf8_unicode, utf8-general, utf8_ci_bin, utf8-danish_bin osv., og ikke mindst hvorfor?

2: Hvis man vælger en af dem, kan man så slippe for at bruge $dbconnection->exec("set names utf8"); eller skrive det i connection for senere versioner?

3: Er der andet jeg bør gøre anderledes, eller andre ting jeg skal tænke over i forbindelse med charset?

Det er vigtigt for mig at få en begrundelse for valg også så jeg ved hvad forskellene er. Håber en af jer kender en masse om det og kan hjælpe :)
Avatar billede Slater Ekspert
12. august 2014 - 07:45 #1
Hvis du har danske data i databasen, så vælg utf8_danish_ci, hvis du kun har engelske, så vælg utf8_general_ci.

Landet har udelukkende noget med sortering at gøre. Ved at vælge Danish-versionen får du æ, ø og å i den rigtige rækkefølge, hvis du vælger SORT BY på et felt med tekst i.

CI betyder case insensitive, og gør at SELECT... WHERE name="bent" vil returnere både "Bent", "bent" og "BENT". Det er den normale opførsel for en database.
Avatar billede Slater Ekspert
12. august 2014 - 08:23 #2
ORDER BY, hedder det naturligvis. Ligegyldig detalje, men jeg var nødt til at rette det.
Avatar billede Mik2000 Professor
12. august 2014 - 14:33 #3
Hej

Tak for svar. Et par tillgsspørgsmål :)
1: Hvis jeg nu vælger danish kan jeg så stadig benytte f.eks. ä og andre svenske/tyske bogstaver mv?

2: Hvis ikke hvad gør man så for at kunne bruge flere sprog og stadig sorterer korrekt med order by?

3: Kan man undgå at bruge $dbconnection->exec("set names utf8"); i pdo og mysqli::set_charset i mysqli hvis man sætter databasen til det?
Avatar billede Slater Ekspert
14. august 2014 - 08:05 #4
1. Ja, tegnsættet er det samme, det er kun sorteringen der er forskel.

2. Det har jeg underligt nok aldrig tænkt over. Jeg testede lige om SET NAMES 'utf8' COLLATE 'utf8_swedish_ci' ændrede det, men det gør det ikke. Så det ved jeg faktisk ikke.

3. Det bør være helt unødvendigt, ja.
Avatar billede Mik2000 Professor
26. august 2014 - 13:37 #5
Hej

Undskyld den sene tilbagemelding. Testede det og glemte alt om eksperten, men så kom der heldigvis en huske mail :)

Der er point til dig hvis du lægger et svar :)
Avatar billede Slater Ekspert
26. august 2014 - 18:56 #6
Tak for det. Fandt du så ud af, hvordan man ændrer sorteringen live?
Avatar billede Mik2000 Professor
05. september 2014 - 23:58 #7
Nej ikke den del endnu, men det må komme. Til at starte med er det vigtigst i dansk og engelsk, og da engelsk ikke har specialtegn, så går det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester