04. marts 2009 - 16:20Der er
29 kommentarer og 1 løsning
Charset, kollation, utf8 - ren forvirring
Hej,
Jeg bliver mere forvirret, jo mere jeg forsøger at forstå disse begreber, og jeg har ofte problemer på min hjemmeside med disse (problemer med danske bogstaver). Er der en som kan forklare mig langsomt og præcist hvad jeg skal gøre og hvad jeg skal undgå og hvad jeg bør ændre i følgende:) Min side er i php. Efter evt. forbindelse til mysql sætter jeg <?php mysql_query("SET NAMES 'utf8';"); ?>, og i head <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />. Mysql database opsat til: MySQL Tegnsæt: UTF-8 Unicode (utf8). MySQL forbindelses-sammenkøring: utf8_danish_ci. Kollation (Collation) utf8_danish_ci (det er måske samme som forbindelses-sammenkøring?) og hver enkelt række i tabellen er utf8_danish_ci. Hvis jeg importere database, er den gemt som UTF8.
UTF-8 er et charset utf8_danish_ci er en collation
Med UTF-8 encoding gemmes engelske bogstaver som 1 byte mens danske bogstaver gemmes som 2 bytes og kinesiske tegn med endnu flere bytes.
utf8_danish_ci sorterer noget der er i UTF-8 encoding efter danske regler (maa betyde at ÆØÅ kommer lige efter XYZ) og ignorerer forskellen paa store og smaa bogstaver d.v.s. at a kommer sammen med A.
ok. Så antager jeg der ikke er nogle fejl i mine indstillinger som angivet i første indlæg. Men så undrer det mig at hvis jeg udtrækker et link fra databasen, som indeholder æøå, fungerer det ikke. Ingen problemer hvis der ikke er æøå med.
Der er nu ikke rigtig en løsning på mit spørgsmål. Det var mere et forståelsesproblem af de begreber jeg nævnte i mit første indlæg. Du har måske noget i samme boldgade som driller?
Jeg har problemer med æøå udtræk fra mysql. Alt hvad jeg henter fra databasen via en query bliver lavet om til mærkelige tegn (altså æøå). Sidder og overglor google...
Jeg har sat min side til at skrive mysql_client_encoding() ud, hvilket giver mig latin1. Jeg har ændret det til uft8 i databasen men får stadigvæk samme resultat. bum buuum.. :s
jeg benytter en myqsl query fra mit php script til at indsætte i databasen.
Hvis jeg indsætter danske bogstaver via phpmyadmin vises de korret i phpmyadmin, men ikke på min side, der vises de som "?". Indsætter jeg danske bogstaver ved hjælp af en query (en form) så bliver de sat ind som til nogle mærkelige tegn i databasen.
Jeg har prøvet at lave et dumb (print_r) af post data'en, og der er ÆØÅ intakte.
Det kan jeg godt se delvist var en fejl, men jeg kan ikke se du havde lagt svar. Dine definitioner er gode, men det er vel ikke et direkte svar på mit spørgsmål: Er der en som kan forklare mig langsomt og præcist hvad jeg skal gøre og hvad jeg skal undgå og hvad jeg bør ændre i følgende:
styrk: det problem har jeg også haft, jeg er dog ikke lige 100% sikkert på løsning. Men hvis du efter forbindelsen til databasen er etableret har mysql_query("SET NAMES 'utf8';, så prøv at fjerne dette.
Så vidt jeg kan se i denne tråd har jeg ikke fået en løsning på:Er der en som kan forklare mig langsomt og præcist hvad jeg skal gøre og hvad jeg skal undgå og hvad jeg bør ændre i følgende:. Grunden til jeg stillede dette spørgsmål var at jeg var forvirret over begreberne charset, kollation, utf8, tegnsæt mv. og pga. dette havde problemer med de danske bogstaver.
Det er skam helt fint at du vil have en konkret loesning.
Men saa maa du jo forklare styrk hvad din loesning var.
Du kan ikke baade: - ikke uddele point fordi du vil have en konkret loesning til din kode - haevde overfor styrk at du ikke kan give en loesning fordi du kun ville have forstaaelsen af nogle begreber
arne_v: ærligt talt kan jeg ikke huske den præcise løsning, men jeg har forsøgt at hjælpe styrk. Da jeg oprindeligt skrev mit første indlæg var de omtalte begreber én stor rodekasse, som resulterede i problemer med danske bogstaver, derfor søgte jeg vejledning. Jeg har en bedre forståelse af de omtalte begreber, men det betyder ikke at mit problem er løst. Jeg har stadig problemer på nogle af mine sider, men jeg ved stadig ikke hvorfor.
styrk: ja det ligner lidt en lappeløsning. Jeg er bange for jeg ikke kan komme med flere idéer. Men et eller andet siger mig jeg slettede SET NAMES 'utf8' og ændrede charset fra utf-8 til iso-8859-1, men det er et skud i tågen.
Synes godt om
Ny brugerNybegynder
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.