ugrás a tartalomhoz

ANSI fájlból szlovák karakterek kinyerése

TIV · 2010. Szep. 8. (Sze), 10.34
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!
 
1

hmm

TIV · 2010. Szep. 8. (Sze), 11.59
Sziasztok!

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!
2

Megoldódott

TIV · 2010. Szep. 8. (Sze), 13.43
A fájl, amire minden PHP-s eszköz és linuxos parancs azt mondta, hogy unknown charset, kiderült, hogy Windows-1250-es kódtáblát használ valójában, ebben vannak a szlovák karakterek tehát. Így már megoldódott a gond.

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:

iconv -f Windows-1250 -t UTF-8 ebbol.txt > ebbe.txt


Remélem segítettem valakinek ezzel.
3

Egyébként iconv függvény van

deejayy · 2010. Szep. 9. (Cs), 07.04
Egyébként iconv függvény van php-ben, ha az segít.