MarcusMedlem sedan juli 2000449 inlägg Hej
Jag håller på och försöker konvertera upp en MYSQL-databas till nån form av UTF-8-set.
Först och främst, det finns ju ett par att välja mellan. Mitt val verkar stå mellan UTF8_bin , UTF8_general_ci eller UTF8_unicode_ci
Jag har letat runt en del men kan någon kunnig själ förklara med ett par enkla meningar vad skillnaden på dessa är och vilket jag bör använda i min databas.
Nåväl, jag har testat en tabell med olika ut8-kodningar och sen provat att skjuta in data från en UTF8-kodad php-fil men i databasen får man de trista tecknen ö för ä t.ex. Vad i processen är det jag missar här egentligen? Måste jag ange något speciellt vid inskjutning / hämtning från databasen?
Mvh
Marcus
GeinMedlem sedan sep. 20005 700 inlägg Lustigt, jag sitter med precis samma uppgift nu. Att konvertera en testdatabas från Latin1 till UTF8.
Hur har du konverterat själva databasen, droppade du alla tabeller och skapade dom på nytt?
MarcusMedlem sedan juli 2000449 inlägg Konverterar om tabellen on the fly och skjuter in ny data eftersom.Verkar märkligt om man behöver skapa tabellen på nytt då jag endast är intresserad av nytillkommen data.
Håller dock ändå på nu och skapar en ny fräsch tabell. :)
GeinMedlem sedan sep. 20005 700 inlägg Jag tror att om du vill ändra collation så måste du skapa databasen/tabellen på nytt helt och hållet.
MarcusMedlem sedan juli 2000449 inlägg Skapat ny DB, ny tabell och ny fields och matat in ny data. Fortfarande problem. Ska fortsätta undersöka detta imorgon kväll. Nu kan jag inte förneka längre att jag har tenta imorgon...
GeinMedlem sedan sep. 20005 700 inlägg Jag, likaså, har enorma problem att konvertera från latin1 till utf8 (det gäller ett vBulletin-forum).
Jag gör följande (delvis linuxspecifikt):
mysqldump --user=mittanvändarnamn--password=lösenord--default-character-set=latin1 --skip-set-charset databasnamnet > dump.sql
sed 's/latin1/utf8/g' dump.sql > dump-charset.sql
mysql --user=mittanvändarnamn--password=lösenord--execute="DROP DATABASE databasnamnet; CREATE DATABASE databasnamnet CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=mittanvändarnamn--password=lösenord--default-character-set=utf8 databasnamnet < dump-charset.sql
Nu när man besöker forumet står det att man är bannad. Har även provat med iconv för att konvertera sql-dumpen från latin1 till utf8. Inga problem med själva konverteringen men om jag importerar dumpen sedan så kommer jag inte åt forumet över huvud taget. Bara en vit sida i webbläsaren.
FuelMedlem sedan okt. 20001 285 inlägg Så.. hur gick det och vad blev det för UTF8 ? :)
GeinMedlem sedan sep. 20005 700 inlägg Jag kan tala för egen del. Ledsnade på allt strul och pröjsade en mindre slant till killen bakom https://www.vcharset.com för att få det fixat. Fungerar utmärkt efter det.
FuelMedlem sedan okt. 20001 285 inlägg aha ok ;) du vet inte vilken variant av UTF det blev ?
GeinMedlem sedan sep. 20005 700 inlägg
Fuel skrev:
aha ok ;) du vet inte vilken variant av UTF det blev ?
Jo, UTF-8 med kollationering utf8_general_ci
FuelMedlem sedan okt. 20001 285 inlägg ok, tack ... har du nånstans man kan läsa om skillnaden mellan dessa och vad det innebär som nämns i huvudinlägget?
GeinMedlem sedan sep. 20005 700 inlägg ci står för case insensitive. utf8_unicode_ci är en utökning av utf8_general_ci och kan hantera en-till-många relation. T.ex. gäller där att ß = ss (till skillnad från utf8_general_ci där ß = s). Det finns också utf8_swedish_ci (bygger på utf8_unicode_ci) som har vissa tillägg. T.ex. att A < B < ... < Å < Ä < Ö etc.
utf8_unicode_ci (och därmed också utf8_swedish_ci) är inte lika snabb som utf8_general_ci.
Exakt när utf8_bin är intressant vet jag inte riktigt. Googla på kollationeringarna så hittar du säkert en hel del.
FuelMedlem sedan okt. 20001 285 inlägg tack :birp have a nice lördag