ugrás a tartalomhoz

kódolás felismerése

kalamona · 2008. Nov. 5. (Sze), 10.16
Sziasztok!

Ti hogyan állapítantok meg egy sztrigről, hogy milyen karakterkódolásban van?
Az mb_detect_encoding() nem jó, mert az egy megadott listából választja ki, amiket még prioritási sorba is kell rendezni, ráadásul úgy vettem észre, ha egy UTF szövegben csak annyi szerepel, hogy "asd", akkor rámondja hogy ASCII, mert ezek a betűk elférnek az ASCII táblában.

Köszönöm!
 
1

Csodák nincsenek

zila · 2008. Nov. 5. (Sze), 10.46
ha egy UTF szövegben csak annyi szerepel, hogy "asd", akkor rámondja hogy ASCII, mert ezek a betűk elférnek az ASCII táblában.

Hát ennyiből még egy ember sem tudja megállapítani, hogy mi lehet, max annyi, hogy valami latinbetűs és biztosan ASCII :)
2

ez voltaképpen igaz

kalamona · 2008. Nov. 5. (Sze), 10.50
mert hülyeséget beszéltem :) inkább azzal van gondom ha van benne egy á, akkor is rávágja hogy UTF, pedig éppenséggel ISO8859-2, az UCS2 Little Endiant meg már végképp nem tudom rávenni hogy megkülönböztesse.
3

Pontosíts

zila · 2008. Nov. 5. (Sze), 11.03
Honnan jönnek a szövegeid amelyeknek a kódolását detektálni szeretnéd?
4

szerte a nagyvilágból

kalamona · 2008. Nov. 5. (Sze), 11.16
A felhasználók által feltöltött szöveges fájlok tartalmazzák a szöveget, és jellemzően többféle kódolásban érkeznek. leggyakraban iso8859-1, iso8859-2, utf-8, ucs2 little endian, Windows-1251 (CP1251)...
7

enca

zila · 2008. Nov. 5. (Sze), 18.08
Én az enca nevű parancssoros (linux-ra, os x-re van biztosan) programmal szoktam néha megnézni file-ok kódolását, persze ez sem tévedhetetlen...
5

Fejlécből?

Thoer · 2008. Nov. 5. (Sze), 13.12
Gyanítom a fájl fejlécében szerepel a karakterkódolás, viszont ez fájltípusonként (és esetleg verziónként) más és más lehet, úgyhogy biztos nem lesz/lenne könnyű kinyerni az adatot. Pláne akkor nem, ha nem valamilyen szabad felhasználású formátumról van szó. Valószínűleg fájltípusonként kell majd keresned egy megfelelő osztályt és minden feltöltött fájltípushoz kiválasztani/használni azt.

Én a helyedben először ilyen phpclasses.org típusú helyeken keresnék vagy keress olyan open source programokat (például webmail) amik megcsinálják, ami kell neked.
6

Döntse el a user!

deadcode · 2008. Nov. 5. (Sze), 13.33
Sajnos nincs egzakt mód, amivel egy szövegről el lehetne dönteni, milyen karakterkódolást használ. Nyilván lehet keresni az UTF-8 vagy hasonló (multibyte) kódolások jellemző karaktereire, de a végén sose lesz pontos az eredmény, főleg nem akkor, ha az is kell, hogy ISO 8859-1/2 vagy CP1251 vagy akármilyen kódlapról van szó, egyszerűen erre nincs mód.

A legkönnyebb megoldás, ha megkérdezed a felhasználótól, hogy milyen kódolással szeretné, ha kezelnéd a dokumentumát, az alapértelmezett mondjuk UTF-8. Esetleg közlöd vele, hogy ha szeretné, hogy a fura betűi is jól jelenjenek meg, és nem tudja biztosan, hogy milyen kódolással készült a szöveg, akkor mentse el UTF-8 formátumban, és akkor azt meg tudja jelölni feltöltésnél, az ékezetei a helyükön lesznek.
8

Egy hangyabokányi

kalamona · 2008. Nov. 5. (Sze), 19.55
Egy hangyabokányi mesteséges intelligenciát lehetett csak belevinni a többi maradt a felhasználóra.

Annyit lehetett tenni, hogy a bizonytalan szitukat elkülönítettem (van most egy kis legördülőmenüs választási lehetőség), és felhívom a figyelmet, ha kriksz-krakszokat lát egy editorral mentse utf8 formátumban. Kaptak rá linket is. Nem hinném, hogy megteszik, de hátha lesz egy 0,01% aki mégis...

Találtam egy jól használható konvertáló osztályt is. Hátha valakinek jól jön.

Közben viszont elgondokoztam, hogy honnan tudja egy asztali alkalmazás eldönteni akkor teljes biztonsággal a kódolást? Mert az editorok nem szoktak zavarba jönni, szépen kiirják, hogy miben nézem. Még egy notepad++ is.
9

Én láttam már tévedni őket

fchris82 · 2008. Nov. 5. (Sze), 23.31
Egy olyan UTF-8 fájlnál, amiben nincs spéci karakter - csak ASCII karakter van - és BOM sincs a fájl elején, figyeld csak meg, hogy nem fogja felismerni, hogy azt te bizony UTF-8-ként mentetted!
Már ha sima TXT-ről beszélünk.