Titta på http://se2.php.net/htmlentities
Inga å, ä eller ö i utskriven information
28 svar · 1 507 visningar · startad av Trankan · sida 2 av 2
Frågan, av Trankan
Hej! När jag skriver ut information från en databas så visas bara frågetecken istället för å, ä och ö. Misstänker att det kan bero på att jag använder UTF-8 på sidan medan jag har latin1swedishci i databasen. Har testat att ändra i databasen till bland annat utf8unicodeci, men det gav ingen skillnad. Är det någon som vet hur man löser det här problemet? :)
Läs frågan i sin helhet →stevenet skrev:
Titta på http://se2.php.net/htmlentities
Okej, tack för länken. Finns det något enkelt sätt att ange den här funktionen för samtliga variablar? Som det är nu så får jag sitta och ange funktionen för samtliga variablar, vilket känns lite ineffektivt.
Sedan har det uppstått ett annat problem också. Jag har ett formulär där jag hämtar information från databasen. Informationen läggs in i fälten med hjälp av variablar. Om jag anger anger htmlentities för en variabel och i funktionen anger att ISO-8859-1 ska användas, så visas informationen rätt. Men när jag sedan klickar på submit-knappen och informationen läggs in i databasen på nytt, så ersätts alla specialtecken som tidigare visades rätt med andra konstiga tecken. Förstår inte riktigt vad som är fel?
Trankan skrev:
Passar på att ställa en liten till fråga. När jag använder header-koden så får all information på sidan den teckenkodning som anges där. Är det inte möjligt att få teckenkodningen att gälla endast för den information som hämtas från databasen?
Nej! Hela sidan använder samma teckenkodning.
Kolla iconv() och utf8_encode() _decode() om du har blandade källor.
Bortaget
Drar upp den här tråden igen, för problemet är fortfarande inte riktigt löst. Jag vill använda UTF-8 som teckenkodning på sidan, men det fungerar inte så bra då informationen som plockas ur databasen har kollationeringen latin1_swedish_ci. Om jag väljer UTF-8 så visas texten på sidan rätt men databasinformationen fel, och om jag väljer ISO-8859-1 så blir det tvärtom. Vad jag antar att jag måste göra är att antingen anpassa texten på sidan till teckenkodningen ISO-8859-1, eller konvertera om datan i databasen till en annan kollationering. Stämmer det, och vad skulle ni i så fall rekommendera?
Kör UTF-8 hela vägen.
Ändra kolumnerna och databaserna till: utf8_general_ci
Sedan kör dessa två frågor precis under databasanslutningen.
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
Då ska det inte vara några problem alls.
Tack för svaret UrMe, har inte kikat i tråden på ett tag då jag lyckades lösa problemet själv. Vad jag gjorde var att ändra alla databastabellerna till utf8_general_ci, och sedan ersatte jag alla specialtecken i tabellerna med de tecken som UTF-8 använder för att visa dessa.
Allting har fungerat bra fram tills nu, då jag upptäckte att det inte fungerar så bra att använda ORDER BY tillsammans med värden som börjar på specialtecken. Vid sorteringen utgår ju MySQL från det tecken som finns först oavsett vad det är för tecken, och tar inte hänsyn till att tecknet ska hjälpa till att visa ett specialtecken. Går det här att lösa på något sätt?
Hittade följande kod i en annan tråd här i forumet:
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET utf8;');
Koden placeras efter databasanslutningen och gör att jag i databasen kan skriva ut alla specialtecken som de ska vara, plus att de visas korrekt på sidan. Problemet är bara att namn som börjar på specialtecken fortfarande inte sorteras rätt, det är ingen som har råkat ut för nåt liknande problem?
Löste problemet själv nu. För svensk sortering ska jag ju använda utf8_swedish_ci vilket jag inte gjorde. Har dock en till liten fråga som jag vore väldigt tacksam om jag kunde få hjälp med. I phpMyAdmin kan jag först ange kollaton för MySQL-uppkoppling, sedan kollation för datbasen och slutligen kollation för alla fält i tabellerna. Jag har satt utf8_swedish_ci på allt detta, men jag vet inte om det är så man ska göra då jag inte riktigt har koll på vad de olika sakerna innebär. Är det någon som skulle kunna ge en liten förklaring?
