[ Tulex @ 06.05.2008. 12:17 ] @
Znam da je ova tema poprilicno izvakana, ali ovo sto se meni desava nije bas tako trivijalne prirode (ili se to meni samo cini)
Pri snimanju fajla koristim OutputStreamWriter i pri njegovom kreiranju definisem da koristi "UTF-8" encode, zatim upisem jedan najobicniji string, bez nasih karaktera. Sve deluje super. Da bih proverio da li je fajl snimljen u utf-8 formatu otvorim taj fajl u notpad-u, odem na Save As i u zadnjem text polju mi pise ANSI umesto UTF-8.

E sad, ako napravim isti taj fajl, ali u njega unesem neki string sa nasim slovima, onda fajl bude snimljen kao UTF-8.
Nije mi jasno sta se tu desava i zasto nece svaki put da mi snimi fajl kao UTF-8.

Bilo kakav predlog je dobrodosao
[ hyle @ 06.05.2008. 12:35 ] @
U tekstualnom fajlu ne postoji header ili nešto slično gde bi eksplicitno bio označen encoding iskorišćen prilikom formiranja fajla. Notepad "zaključuje" da li treba koristiti UTF-8 samo na osnovu sadržaja fajla i zbog toga ti i ne predlaže taj encoding ukoliko svi karakteri u fajlu pripadaju standardnom engleskom alfabetu.

Evo ako imaš vremena pročitaj ovo: http://www.joelonsoftware.com/articles/Unicode.html
[ Tulex @ 06.05.2008. 12:51 ] @
hyle: hvala ti puno na brzom odgovoru. Sad mi je jasno zasto se to desava. Ja sam forsirao snimanje fajlova u utf-8 zato sto mi neke aplikacije kasnije imaju problema pri citanju tih fajlova ako nije UTF-8 (bar sam do sada tako mislio). Posto je fajl koji ja kreiram ustvari .csv, Excel ga nekad otvori uredno, a nekad kao obican text u jednoj celiji u zavisnosti od formata snimanja. Medjutim izgleda da je problem negde drugde.

Hvala ti jos jednom.
[ Tulex @ 06.05.2008. 13:45 ] @
Citat:
hyle: U tekstualnom fajlu ne postoji header ili nešto slično gde bi eksplicitno bio označen encoding iskorišćen prilikom formiranja fajla.


Citajuci po forumima zakljucio sam da to i nije bas tacno. Istina je da ne postoji header u obicnom tekstu, ali ako fajl tokom snimanja koristi UTF-8 encoding onda mu se na pocetak dodaju tri bajta "EF BB BF". Te notepad tokom dekodovanja detektuje da je upitanju utf-8. Posto koristim takodje Notepad++ u njemu ima opcija za detektovanje trenutnog encodera kao i konverzija u neki zeljeni. Tako da je moguce konvertovati u UTF-8 i nakon toga ce ga i Notepad (klasican) detektovati kao UTF-8 iako nema ni jedan non-english karakter u samom tekstu. Time se vracam na pocetak mog problema jer mi nije jasno zasto OutputStringWriter ne dodaje te utf-8 bajtove na pocetak mog fajla.

Takodje postoji i UTF-8 plain (ili UTF-8 witout BOM kako negde pise)koji nema te pocetne bajtove i koji nece biti dobro dekodovani u notepad-u, ali pitanje je koji zaista java koristi kad mu se samo kaze "UTF-8", valjda nije plain.