Szóval sql tábla import, oldal megnyit, és ez fogad:
Mint látható a karakterek jól össze vannak kuszálódva.. A portál motor még E107 0.7.11, és UTF-8-as változat. A motor saját dolgai, jól jelennek meg, viszont az általam felvitt tartalmak ékezetei helyett ??, meg hasonló idétlen karakterek jelennek meg...
Amit próbáltam:
recode latin1...utf8
recode latin2...utf8
Az sql táblában is módosítottam már a DEFAULT CHARSET -et latin1, és latin2-re is, sőt utf8-ra is...
A Spiderhost, ahová most került az oldal utf8_unicode_ci -t használ, viszont, ha kiexportálom pl. az én SQL tábláimat, abban a DEFAULT CHARSET-ben latin1 szerepel...
Szóval teljes a kavar...
Várnák további ötleteket, mert ebben az oldalban majd' fél éves munkám fekszik, és semmi kedvem újrakezdeni nulláról... :(
- gkaroly blogja
- A hozzászóláshoz be kell jelentkezni
- 1089 megtekintés
Hozzászólások
Régi szolgáltatónál a mentés előtt konvertáltad az adatokat?
Importnál megadtad, hogy UTF8 Charset-et használsz?
- A hozzászóláshoz be kell jelentkezni
Hát, ha a konvertálás szó alatt azt érted, hogy a PHPMyAdmin,
MySQL kapcsolat egyeztetés: mező alatt utf8_unicode_ci -t állítok be, akkor arra azt mondom, hogy alapból azon áll a legördülő lista. De ehhez képest akkor is latin1-ben konvertál... Most importnál belőttem a latin1-et még rondább... :(
--
Charlos
-- http://www.uvegcsont.hu -- / -- http://ganyikaroly.net --
Jól csak a szívével lát az ember. Ami igazán érdekes, az a szemnek láthatatlan. - by A Kisherceg
- A hozzászóláshoz be kell jelentkezni
Ellenőrizd, hogy a mezők kódolása is UTF8-e, mert azokat külön is be lehet állítani.
Aztán hasznos lehet még közvetlenül a db csatlakozás után kiadni azt az SQL parancsot, hogy
SET NAMES utf8;
--------------
Eat healthy,
Exercise daily,
Die anyway.
- A hozzászóláshoz be kell jelentkezni
Lássuk csak.
1. A MySQL-nek (szinte) mindegy, hogy milyen karakterkészlettel _tárolja_ az adatokat. Akár mezőnként lehet más és más.
2. A MySQL-nek mindegy, hogy milyen karakterkészlettel _fogadja_ és _szolgáltatja_ az adatokat. De ezt meg kell mondani neki.
Ha nem határozod meg, hogy milyen karakterkészletet akarsz használni (SET NAMES parancs pl, kapcsolódás után) és egyéb módon sincs ez definiálva akkor könnyen belefuthatsz, hogy valamilyen platform defaultként értelmezi a MySQL. És itt lehet igazán elrontani a dolgokat, ha a MySQL azt hiszi, hogy az alkalmazás latin1_swedisht beszél hozzá, de valójában UTF-8-at, akkor könnyen elképzelhető hogy az adatok pl. egy utf-8 mező esetén latin1_swedish -> utf-8 konverzión fognak átesni az eleve utf-8 karaktereid. Kiolvasáskor meg utf-8 (de már eleve értelmetlen karakter) -> latin1, és máris két kérdőjelet kapsz már a resultsetben is.
Az export tartalmazni szokta a karakterkészletet is így nem itt szokott elromlani, hanem inkább ott, hogy az új platformon más a default connection encoding.
- A hozzászóláshoz be kell jelentkezni
Azért azt is nézd meg, hogy a szolgáltatód nem adja -e meg a charsetet a http headerben, mert az "felülírja" a meta taget.
Egyébként az e107 valamiért kedvencem. Kb olyan, mint az UHU; ha egyszer megy, akkor olyan, mint az olajozott villám, de néha kínszenvedés megoldani a problémákat.
Nem mindíg a db-vel van a probléma...tapasztaltam.
Szerk: Megnéztem, valóban a db-vel van a probléma. Nem kevertél bele valami iso8859-2 modult, vagy fájlt?
kötöjelkötöjel
//:wladek's world
- A hozzászóláshoz be kell jelentkezni
Láthatóan a magyar ékezetek helyett két kérdőjel jelenik meg. Ebből arra következtetek, hogy az adatbázisban UTF-8 kódolással szerepel a szöveg, de a megjelenítő azt éatin1 vagy latin2-ként olvassa ki. Szerintem a megjelenítő réteg karakterkódolásán állítgass valahogy...
- A hozzászóláshoz be kell jelentkezni
-- MySQL dump 8.22
--
-- Host: localhost Database: pornosite
---------------------------------------------------------
-- Server version 3.23.55-log
/*!40101 SET NAMES utf8 */;
--
-- Table structure for table 'access'
--
CREATE TABLE access (
PRIMARY KEY (aid)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Pl. itt egy táblám, mert mostanában nekem is volt hasonló problémám. Innen ami fontos az az elején lévő set names=utf8, és ez a sor:
ENGINE=MyISAM DEFAULT CHARSET=utf8;
Ezt minden tábla elejére be kell raknod és utána lesz jó :S
-------
-akkor tegyél fel debiant // -persze, és attól a routerem megjavulna igen // -nem, de az lenne a legkisseb problémád
- A hozzászóláshoz be kell jelentkezni
Igen már ezt is próbáltam, hogy a latinX-et sed-el kicseréltem utf8-ra. Ugyanaz.
--
Charlos
-- http://www.uvegcsont.hu -- / -- http://ganyikaroly.net --
Jól csak a szívével lát az ember. Ami igazán érdekes, az a szemnek láthatatlan. - by A Kisherceg
- A hozzászóláshoz be kell jelentkezni
/OFF
"Host: localhost Database: pornosite"
Ez az adatbazis eleg jo lehet ;)
/END OFF
- A hozzászóláshoz be kell jelentkezni
Amit hatalmas kínok árán kiderítettem:
A kapott mysql dump fejléce, amit a phpmyadmin exportál, UTF-8 (MC edit alatt jól jelenik meg), viszont a mysql többi része latin2, de még ebben sem vagyok olyan biztos.
Ugyanis a DEFAULT CHARSET után latin2 áll, és az elektromos gitár helyett ezt látom: Elektromos gitĂĄrok... Szóval passz... Próbáltam már én mindent, de mindent. recode latin1...utf8 , latin2...utf8 utf8...latin2, stb...
Belenéztem már az én oldalam sql tábláiba is, és ott is kb. ugyanez a helyzet: utf8 a fejléc, viszont itt latin1 a többi tábla kar. kódolása. Eljátszottam már ugyanezt, a csutorral is, de ugyanaz... Ronda, ronda, és ronda...
De néha még rondább eredményt kapok, mint most kinéz... Valaki kérem, ha tud segítsen, mert komolyan mondom, már a sírógörcs határán vagyok (nem vicc)... Nem hiszem el, hogy egy nyamvadt költözés ennyi szenvedéssel jár.
--
Charlos
-- http://www.uvegcsont.hu -- / -- http://ganyikaroly.net --
Jól csak a szívével lát az ember. Ami igazán érdekes, az a szemnek láthatatlan. - by A Kisherceg
- A hozzászóláshoz be kell jelentkezni
:D
rakd az egeszet utf8ba. mar nem hasznal senki mast :)
- A hozzászóláshoz be kell jelentkezni
:D
- A hozzászóláshoz be kell jelentkezni
Nekem karakterkódolási ügyben segített a következő (ezt kellene valahogy a mysql_select_db után beszúrni):
mysql_query("SET NAMES 'utf8';");
Előtte meg az egész dumpot egységesen utf8-ra konvertálni valahogy.
Andi, really. Take it from me. If I tell you something, I'm usually right.
- A hozzászóláshoz be kell jelentkezni
Szia!
Nekem egy hasonló problémám volt, a következő menetrend segített.
//régi adatbázis kiexportálása
mysqldump --user=root -p --default-character-set=cp852 -c --insert-ignore --skip-set-charset mandelbrot >mandelbrot_cp852.sql
//adatkonverzió (bár cp852 az export, de iso-8859-2-ből lett jó a konverzió!)
iconv -f iso-8859-2 -t utf8 mandelbrot_cp852.sql > mandelbrot_utf8_8859-2.sql
//default charset eltávolítása (a dumpban hiába volt megadva a --skip-set-charset kapcsoló, mégis betette
sed -i -e 's/DEFAULT CHARSET=cp852/ /' mandelbrot_utf8_8859-2.sql
//régi adatbázis eldobása, újbóli létrehozása
mysql --user=root -p --execute="DROP DATABASE mandelbrot; CREATE DATABASE mandelbrot CHARACTER SET utf8 COLLATE utf8_general_ci;"
//adatbázis importálása
mysql --user=root -p --default-character-set=utf8 mandelbrot < mandelbrot_utf8_8859-2.sql
//az adatbázis kapcsolatnál (connect) legyen beállítva:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
"Egyre több informatikusnak van nemi élete. Hígul a szakma..."
- A hozzászóláshoz be kell jelentkezni