
kódování Eclipse
Zdravím, potřebuji zpracovat data v textovém souboru, ale někde musí být problém s kódováním. V texťáku jsou klasicky znaky s háčkama a čárkama, takže po načtení slova "čtení" mám v eclipsu zajímavé znaky.
Kde to prosím změním? Určitě to musí jít. K načítání používám BufferedReader.
Díky
Dej sem kód i texťák.
Zdroje
No jaký máš přesně problém? Kromě toho, že to je prasárna tam žádný problém nevidím. Vše mi funguje.
Co tam je prasárna? Neprogramuju 10let... V debug módu když si krokuji načítání různých řádek tak u slova s "č" mam prostě místo "č" znaky, tudíž když to budu chtít někam vypsat, tak to nebude v pořádku.
Jinak jsem po Tobě nechtěl ať mi zkontroluješ jestli program běží, ale chybu v kódování.
som ten tvoj vytvor stiahol, a google nasiel za sekundu:
http://docs.oracle.com/javase/1.4.2/docs/api/java/ io/FileReader.html
takze pouzi InputStreamReader namiesto FileReader, a daj mu tam do parametra kodovanie v ktorom je ten textak
A jak tedy prosím to napravit?:
BufferedReader vstup = new BufferedReader(new InputStreamReader(?????, "UTF-8"));
Jinak jsem ještě zkoušel uložit ten texťák s kódováním ANSI (původně UTF-8) a šlo to - mam to brát jako problém vyřešen?
ak si si isty ze v kazdom systeme bude default enviroment taky ze to bude chciet single byte character tak ano.
Ked to chces naisto a mas textak v pevnom kodovani vzdy tak je lepsie pouzit ten InputStreamReader. Co tam mas dat viz google alebo referencie tvojho jazyka. Nauc sa pouzivat referencne prirucky (dnes uz toho je na google plno)
Právě že ten soubor bude asi vždy v tom UTF-8... Já tedy použiji ten InputStreamReader... Můžeš mi poradit, co dát do prvního parametru? Nejlépe něco, kde bych načítal celou řádku a ne znak po znaku.
1) Neráčil jsi zmínit OS. Takže se poradit moc nedá, mně to na XP funguje správně.
2) Kód je prasárna celý. Třída Udalost je k ničemu, protože z ní nejdou nijak vyčíst data. Ukládat datum do Stringu taky není nejlepší nápad.
3) Jestli chceš specifikovat kódování při načítání ze souboru, použij třídu Scanner.
Windows 7 Professional 32bit, nečekal jsem že je to důležité. Třída událost není hotová, protože jsem na celém projektu dělal půl hodiny a hned toto mi zarazilo, tam getry a setry a spousta dalších metod teprve přibyde. Scanner používat nechci, protože při velkých datech zpomaluje program.
No comment.
Taxi to udělej, jak chceš...
No tak já nevim, jak je to lepší... Dělali jsme na to testy (které tak vyšly) a učili jsme se to tak, že pokud jde o rychlost, je lepší to nepoužívat...
A tobě jde o rychlost? Vždyť v tom souboru je asi 20 řádků. Nebo tam budeš mít nakonec gigový texťák?
Nechal jsem tam jednu událost, protože ostatní nikoho nemusejí zajímat (pokud by byl zvědavej).
Pochop, že i kdyby ten soubor měl 1MB, tak rozdíl mezi načítáním přes Scanner a tím Readerem bude v milisekundách...
Drž ze zásady, že nejdříve se programuje až pak optimalizuje.
Tak já to udělám přes ten Scanner.
A datum jako String nevím jinak, protože konstruktory ve třídě Date nejsou doporučovány a je to nahrazeno třídou Calendar, čemuž moc nerozumím, jak může třída Date být nahrazena třídou Calendar.
Ach jo. Date klidně používej, ničemu to nevadí. Jenom je třeba davát pozor na to, že není immutable, což bude asi důvod proč, není doporučována. Je to určitě lepší, než mít datum ve Stringu. Co když budeš chít dva datumy porovnat? Tu metodu bych nechtěl vidět...
Proč ach jo? Tak to nevím, ne? Tak říkáš, že to je v pohodě, i když ho nedoporučují? Není immutable? Tzn. (jestli si dobře vzpomínám), tak lze atributy měnit po vytvoření objektu? Ten String mi přišel jako jediná náhrada toho...Leda pak si udělat extra třídu Datum?
Normálně používej Date. Jenom nikdy nevracej/neukládej odkaz na originál ale na kopii objektu. Něco jako:
A budeš mít jistotu, že nikdo nemá odkaz na objekt Date, který je ve fieldu třídy A. Takže ti ho nikdo nezmění pod rukama.