FAQ |
Kalender |
![]() |
#11 | ||
|
|||
Klarade millennium-buggen
|
Den kan visas korrekt även om det är fel i förhållande till vad inställningarna är.
Blev inte klar på om du får samma resultat även om du sänder frågan set names utf8; innan? |
||
![]() |
![]() |
![]() |
#12 | ||
|
|||
Flitig postare
|
Vad skriver du i för språk? asp.net? (vb.net eller c# isf?) Leta efter charset eller liknande på response-objektet
|
||
![]() |
![]() |
![]() |
#13 | ||
|
|||
Mycket flitig postare
|
Intressant, med "set names utf8" blir ordet "ingå" istället "ingÃ¥", kör jag latin1 blir det "ingÃ¥" (när webbläsaren är inställd på iso vill säga, ändrar jag webbläsarinställningarna till utf8 blir det "ingÃ¥")
|
||
![]() |
![]() |
![]() |
#14 | ||
|
|||
Mycket flitig postare
|
Använder som sagt klassisk asp (tyvärr, mycket jobb att koda om allting)
|
||
![]() |
![]() |
![]() |
#15 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Det är bara det att i tidernas gryning lade du in utf8-material fast anslutningen var satt till latin1 (set names latin1, vilket av nån konstig anledning är/var standard i mysql). Därmed kan du aldrig få tillbaka det som läsbar text annat än om du kombinerar en anslutning i latin1 med att du i webbläsaren tolkar det som utf8. Alla andra kombinationer ger oönskade resultat. Men eftersom databaserna inte innehåller det som mysql tror att de innehåller så kan du inte använda mysql:s inbyggda funktioner för konvertering. Du måste dumpa ut innehållet, inte via mysqldump (eftersom det kommer att ge dig ingÃ¥ istället för ingå - pröva), utan genom en egen dump som bygger på frågor när du har ditt anslutning satt till latin1, Sen får du köra in allt igen fast då med ändrat anslutning till utf8. Hårt jobb men det lönar sig att ligga rätt positionerad i teckendjungeln. |
||
![]() |
![]() |
![]() |
#16 | |||
|
||||
Mycket flitig postare
|
Det behöver inte alls vara så komplicerat som Magnus_A säger. Återigen låt MySQL göra det som det kan bäst.
Om fälten är i utf8 men deklarerade som latin1 så räcker: ALTER TABLE x MODIFY y [TEXT el. VARCHAR(n)] CHARACTER SET utf8 Om det måste konverteras: (verkar inte vara fallet för din del) ALTER TABLE x CONVERT TO CHARACTER SET utf8 Annars om den faktiska teckenkodningen är i någon feldeklarerad form så får du först konvertera innehållet till BINARY (då har du den råa teckenkoden som du sedan kan applicera teckenuppsättningar eller konverteringar på): ALTER TABLE x MODIFY y BLOB osv. ALTER TABLE x MODIFY y TEXT osv. CHARACTER SET utf8 Klona en tabell och prova tills du fått fram rätt tabell (glöm som alltid inte att ta en backup när du gör större förändringar i databasen). Det hela finns detaljerat beskrivet i MySQL:s dokumentation: http://dev.mysql.com/doc/refman/5.0/en/alt...lter-table.html se någonstans mitt på sidan . Jag har haft nästan hur tokiga tabeller som helst med blandat latin1, latin2, utf8 som latin1, latin2 som latin1, osv. utan att det har varit särskilt svårt att låta MySQL konvertera det hela till rätt teckenuppsättning. Den bästa vägen brukar vara att gå via BINARY. PS För att se vad du har för deklarerad teckenuppsättning så kör SHOW FULL COLUMNS FROM x, har jag för mig. |
|||
![]() |
![]() |
![]() |
#17 | ||
|
|||
Mycket flitig postare
|
Får bli till att experimentera lite med detta i helgen. Ska ta backuper också, blev lite nervös igår när MySQL-Front helt plötsligt tog bort innehållet i alla fält som innehöll specialtecken, men som tur var räckte det att starta om programmet, databasen var intakt (vilket vore konstigt annars, hade ju bara kört med SELECT).
Citat:
|
||
![]() |
![]() |
![]() |
#18 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
![]() |
![]() |
![]() |
#19 | ||
|
|||
Klarade millennium-buggen
|
Konvertera latin1 till utf8 går bra med martines metod, men jag har inte fått det att fungera på kolumner där jag fått in utf8 i latin1-kolumner.
Ingen skulle vara gladare än jag om jag får binary-metoden att fungera, så hjälp mig gärna att hitta rätt. Jag har dock använt för många timmar på att försöka konvertera fält och databaser utan att nå önskade resultat, så jag använder numer andra genvägar. |
||
![]() |
![]() |
![]() |
#20 | |||
|
||||
Mycket flitig postare
|
Citat:
Jag kan bara bekräfta att jag ett flertal gånger har konverterat (via BINARY) utf8-kolumner som varit deklarerade som latin1 så att de blir korrekta (precis som du säger uppstår problemet på genom att MySQL innan version 5 (egentligen 4.1 för att vara exakt) inte hade något stöd för unicode vilket gjorde att man var tvungen att spara utf-8 i latin1-deklarerade kolumner). Dokumentationen för MySQL förklarar som sagt hur man gör (länkad i inlägget ovan): Citat:
![]() Edit: Relevant mening i dokumentationen nu röd. |
|||
![]() |
![]() |
Svara |
|
|