WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Svenska tecken i utf-8 och latin1 (https://www.wn.se/forum/showthread.php?t=27751)

Timofey 2008-03-07 04:18

Min MySQL databas, mina tabeller och fälten är inställda på latin1_swedish_ci
Alla sidorna har charset utf-8
Detta gör att om jag sparar värden från en form på sidorna med utf-8, så visas det fel i databasen där svenska tecken förekommer.

Om jag manuellt skriver in något i databasen med svenska tecken, så fungerar det att visa korrekt med utf8_encode().
Finns det något sätt att göra latin1_encode innan jag sparar i databasen? Eller är den enda lösningen på problemet att ställa in alla fält och tabeller i databasen på collation utf_8?

MMC 2008-03-07 07:34

Den bästa lösningen är nog att du gör om alla tabeller till utf-8. Om du skulle börja konvertera mellan charsetsen vid in/utläsning från databasen, vad händer då när en användare skriver in ett tecken som saknar representation i iso-8859-1?

Kom ihåg att du måste köra ALTER TABLE tabell CONVERT TO CHARACTER SET för varje tabell, det räcker inte att bara ändra collation på databasen. Om sajten är live, gå väldigt försiktigt fram :)

Lumax 2008-03-07 09:05

Citat:

Originally posted by alltinggratis@Mar 7 2008, 05:18
Finns det något sätt att göra latin1_encode innan jag sparar i databasen?
utf8_decode()

Magnus_A 2008-03-07 09:28

Formuläret skickar data kodade efter hur sidan visas (styrs av besökarens val och de headers som skickas från webbservern)

Att blanda kodningar på det sätt du beskriver skapar problem och är krångligt. Antingen gör du om den statiska texten på webbsidan till ISO och kör allt i ISO, eller så konverterar du tabellernas innehåll till UTF8.

collation styr sortering enbart, så att sorteringen blir riktig utefter den kodning man valt.

Timofey 2008-03-07 14:32

Citat:

Ursprungligen postat av Fredrik S
Citat:

Ursprungligen postat av alltinggratis
Finns det något sätt att göra latin1_encode innan jag sparar i databasen?

utf8_decode()

Tack, utf8_decode() fungerade bra.
Kanske inte den bästa lösningen, men det får duga i nuläget. Sedan så kanske jag gör om tabellerna till utf8.

Timofey 2008-04-25 00:53

4 bifogad(e) fil(er)
Nu har jag stött på ett liknande problem igen.
Jag har sidan kodad med utf-8 och även charset i head är inställt på utf-8.

Ibland så visas dock texten enligt bild nedan.
Detta uppkommer bara när
- man innan fyller i ett formulär och hamnar på sidan som behandlar datat med GET
- man använder IE7
- med Encoding > Auto-select på i webbläsaren

Varannan gång blir allt rätt, varannan fel ungefär.

Har ni några idéer vad det kan vara? Har hittat samma problem via Google, men ingen lösning.

Edit: IE ställer ändå in encoding Western European (Windows) när problemet uppkommer.

allstars 2008-04-25 08:46

Det kan vara servern som inte ger rätt charset. Det kanske finns en kod codepage i php som det finns i asp?!

Magnus_A 2008-04-25 12:30

Apachedirektivet SetDefaultCharset styr vad som står i headern.

Timofey 2008-04-25 18:13

Citat:

Originally posted by Magnus_A@Apr 25 2008, 11:30
Apachedirektivet SetDefaultCharset styr vad som står i headern.

Hur kan jag kontrollera att det är där felet ligger? Kan jag se vad som står i headern när sidan laddats med någon kod? Konstigt att felet bara uppkommer i IE.

Magnus_A 2008-04-25 19:28

Vet inte om IE men i forefox finns det massor av tillägg som berättar om vad som händer, t ex Live HTTP Headers och Tamper Data.


Alla tider är GMT +2. Klockan är nu 02:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson