Encoding UTF-16LE v UTF-8 (TRICKY zadeva!)
 
dunker 26. jun 2012 12:20:04 Pridružen od:
23. apr 2007
261 objav
377 4 1
#1

Lep pozdrav vsem skupaj!



Mogoče se najde kdo, ki bi mi znal pomagat, čeprav je problem res kar kompleksen.



Imam tekstovno datoteko, za katero v binarnem pogledu vidim, da se začne s 4 bajti "FE FF". Glede na tole povezavo ta BOM (byte-order mark) nakazuje, da gre za besedilo v "UTF-16/UCS-2, little endian" encodingu.



Ko to besedilo berem na strežniku (kot UTF-8), je tekst seveda precej popačen. Primer izvornega besedila: "It іs nevеr a сonvenіent timе tо hаvе уour vеhicle quіt оn уоu."



Primer besedila na strežniku: "It Ñ�s nevеr a Ñ�onvenÑ�ent timе tо hаvе Ñ�our vеhicle quÑ�t оn Ñ�оu."



Težava pa je v tem, da na noben način ne morem teksta pretvorit v uporaben UTF-8 zapis. Poskušal sem z iconv(), z mbconvertencoding() ... ampak brez uspeha.



Tekstovno datoteko sem tudi s pomočjo Notepad++ pretvoril v "UTF-8 without BOM", vendar je tekst po prenosu na strežnik še vedno popačen.



Ima kdo kakšno idejo, kako problem rešit? Se je že kdo srečal s čim podobnim?



Hvala vnaprej!


všeč(0) ni všeč(0) spam(0)
 
vision2003 26. jun 2012 13:51:16 Pridružen od:
15. apr 2010
259 objav
177 20 10
#2

Sej verjetno si že videl tole: http://shreef.com/2010/08/iconv-misunderstands-utf-16-strings-with-no-bom/ ?



Če ne dela, bi js probal še na Windows serverju, ker Linux ma včasih svoje fore (kak setting zakopan kje globoko v kakem configu).


všeč(1) ni všeč(0) spam(0)
 
dunker 28. jun 2012 07:58:58 Pridružen od:
23. apr 2007
261 objav
377 4 1
#3

Hvala za pomoč.



Zanimivo branje, ampak glede na to, da moji problematični teksti vsebujejo BOM (FE FF), ki nakazuje UTF-16/UCS-2 LE, v tem specifičnem primeru žal ni pomagalo.



Po 5 urah iskanja rešitve sem zaenkrat stvar rešil zelo "nerodno", ampak funkcionalno. Grupe bajtov, ki so predstavljali popačene znake, sem mapiral na pravilne znake. Za moj primer se je to izkazalo kot dovolj dobro, ni pa neka univerzalna rešitev in bo verjetno odpovedala pri kakšnem tretjem encodingu.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se