ANSI fájlból szlovák karakterek kinyerése
Sziasztok!
Kezdek meghülyülni, kérlek segítsetek. Van egy txt fájlom, amit ha megnyitok notepad++-al, akkor szlovák karaktereket (Ľ, Ť, Č) és szövegeket látok benne, tökéletesen! A notepad++ szerint a fájl kódolása ANSI, ez biztos így is van. Ezt a fájlt én beolvasom PHP-val (a betöltő fájl is UTF-8 kódolást használ) és próbálom belenyomni egy UTF-8-as táblába (utf8_general_ci, de slovak_ci-vel is próbáltam). Itt vannak a bajok. Egyszerűen eltorzulnak az ékezetek. Az Ľ helyett ékezetes z lesz, a Ť helyén nem látszik semmi phpmyadminnal (de az oldalon kérdőjel jelenik meg helyette), a Č viszont megmarad helyesen. Egyszerűen nem tudom mit csináljak. Tudni kell, hogy ha a fájl kódolását átállítom UTF-8-ra notepad++-al, akkor hibátlanul berakja őket. Ha hagyom ANSI-n, akkor torzulnak az ékezetek. Ha SET NAMES utf8-at nyomok a beszúrások előtt, akkor kb. odáig írja be a szövegeket a táblába, amíg nem jön egy kacifántosabb ékezetes betű, de van ahol simán eltünteti az ékezeteket és úgy teszi be.
Mondom jól van, akkor mb_convert_encoding($szoveg, 'UTF-8', 'auto');
Unable to detect character encoding in.... remek. Ha a fájl kódolása UTF-8, minden rendben van. Meg lehet ezt oldani php-ből én úgy érzem, de hogyan? Vagy mindig át kell állítani a fájl kódolását? Hol hibázok?
Köszönöm nagyon!
■ Kezdek meghülyülni, kérlek segítsetek. Van egy txt fájlom, amit ha megnyitok notepad++-al, akkor szlovák karaktereket (Ľ, Ť, Č) és szövegeket látok benne, tökéletesen! A notepad++ szerint a fájl kódolása ANSI, ez biztos így is van. Ezt a fájlt én beolvasom PHP-val (a betöltő fájl is UTF-8 kódolást használ) és próbálom belenyomni egy UTF-8-as táblába (utf8_general_ci, de slovak_ci-vel is próbáltam). Itt vannak a bajok. Egyszerűen eltorzulnak az ékezetek. Az Ľ helyett ékezetes z lesz, a Ť helyén nem látszik semmi phpmyadminnal (de az oldalon kérdőjel jelenik meg helyette), a Č viszont megmarad helyesen. Egyszerűen nem tudom mit csináljak. Tudni kell, hogy ha a fájl kódolását átállítom UTF-8-ra notepad++-al, akkor hibátlanul berakja őket. Ha hagyom ANSI-n, akkor torzulnak az ékezetek. Ha SET NAMES utf8-at nyomok a beszúrások előtt, akkor kb. odáig írja be a szövegeket a táblába, amíg nem jön egy kacifántosabb ékezetes betű, de van ahol simán eltünteti az ékezeteket és úgy teszi be.
Mondom jól van, akkor mb_convert_encoding($szoveg, 'UTF-8', 'auto');
Unable to detect character encoding in.... remek. Ha a fájl kódolása UTF-8, minden rendben van. Meg lehet ezt oldani php-ből én úgy érzem, de hogyan? Vagy mindig át kell állítani a fájl kódolását? Hol hibázok?
Köszönöm nagyon!
hmm
Azt vettem észre, hogy a file -bi a.txt parancs szerint (linux alatt) a fájl kódolása UNKNOWN. Ha Windows alatt notepad++-al megnyitom és átnyomom ANSI-ról UTF-8ra, akkor minden rendben van. Lehet, hogy van benne valami olyan karakter, ami nem fér bele az ANSI-ba? Kicsit hiányos a tudásom ezen a téren. Tud valaki segíteni?
Köszönöm!
Megoldódott
Amúgy az egyszerűség miatt azt csináltam, hogy a iconv-vel konvertálom át a fájlt, még mielőtt a PHP hozzányúlna:
Remélem segítettem valakinek ezzel.
Egyébként iconv függvény van