Citace od: Filip Jirsák kdy 14. 07. 2014, 10:29:51Třídy java.io.FileReader a java.io.FileWriter by se (mimo nějakých prototypů) vůbec neměly používat, mají špatně navržené API. Používají kódování souborů, které se sebere bůhvíkde*), což je špatně – někde to pak magicky funguje (trefí se náhodou to kódování, které programátor chtěl), jinde se to pak zase magicky rozbíjí. Správně má programátor vždy znakovou sadu určit, a pokud chce použít znakovou sadu platformy, má to explicitně uvést. Takže je nutné používat kombinaci FileOutputStream+OutpuStreamWriter resp. FileInputStream+InputStreamReader.java.io.OutputStreamWriter a java.io.InputStreamReader jsou na tom sice podobně, ale mají přetížené konstruktory, kde se znaková sada uvádí, takže tam je špatně vždy jen ten jeden konstruktor.*) Ve skutečnosti je to voláním java.nio.charset.Charset#defaultCharset, ale není to napsané ani v dokumentaci těch tříd. Metoda defaultCharset() bere kódování ze systémové vlastnosti file.encoding, a pokud není nastavena, bere se výchozí kódování platformy – na unixech podle locale, na Windows znaková sada systému.
System.setProperty("file.encoding","UTF-8");Field charset = Charset.class.getDeclaredField("defaultCharset");charset.setAccessible(true);charset.set(null,null);
Citace od: Kit kdy 14. 07. 2014, 20:06:16Citace od: Filip Jirsák kdy 14. 07. 2014, 19:50:51Pak existují taková zvěrstva jako v HTML a XML, kde se kódování textu souboru dozvíte někde veprostřed textu toho souboru. Zajímalo by mne, jak vypadá oficiální algoritmus pro detekci kódování těchto souborů.procesor se pokusí uhodnout
Citace od: Filip Jirsák kdy 14. 07. 2014, 19:50:51Pak existují taková zvěrstva jako v HTML a XML, kde se kódování textu souboru dozvíte někde veprostřed textu toho souboru. Zajímalo by mne, jak vypadá oficiální algoritmus pro detekci kódování těchto souborů.
Citace od: Filip Jirsák kdy 14. 07. 2014, 20:38:22Citace od: Kit kdy 14. 07. 2014, 20:06:16Citace od: Filip Jirsák kdy 14. 07. 2014, 19:50:51Pak existují taková zvěrstva jako v HTML a XML, kde se kódování textu souboru dozvíte někde veprostřed textu toho souboru. Zajímalo by mne, jak vypadá oficiální algoritmus pro detekci kódování těchto souborů.procesor se pokusí uhodnoutNo právě. Myslel jsem, zda ten oficiální algoritmus obsahuje hádání, nebo zda existuje deterministický postup.
Citace od: Kit kdy 14. 07. 2014, 20:44:40Však jsem popsal deterministický postup. Musím zde uvádět kompletní algoritmus, abys to pochopil?
Citace od: Filip Jirsák kdy 14. 07. 2014, 21:22:53"Pokusí se uhodnout" nezní zrovna jako deterministický postup. A "jiná kódování se nezkoušejí" nevypadá jako dobrý postup, jak přečíst ten dokument v jiném kódování. Ono to v praxi funguje, protože se reálně těch kódování moc nepoužívá, ale univerzální postup použitelný pro jakoukoli sadu kódování neexistuje. Když si vymyslím čtyřbajtové kódování, kde menšítko bude kódováno jako 3C 00 3F 00 atd., bude se to těžko odlišovat od UTF-16.
Citace od: Kit kdy 14. 07. 2014, 21:40:36Dokumenty XML, které jsou v jiném kódování, mají povinnost toto kódování uvést v hlavičce.
Citace od: Filip Jirsák kdy 15. 07. 2014, 06:49:52Citace od: Kit kdy 14. 07. 2014, 21:40:36Dokumenty XML, které jsou v jiném kódování, mají povinnost toto kódování uvést v hlavičce.No právě. Jenže pro správné přečtení hlavičky je nutné znát to kódování.
Citace od: Kit kdy 15. 07. 2014, 07:30:24V té hlavičce smí být jen znaky s ordinální hodnotou 0-127.
Citace od: Filip Jirsák kdy 15. 07. 2014, 08:14:08Citace od: Kit kdy 15. 07. 2014, 07:30:24V té hlavičce smí být jen znaky s ordinální hodnotou 0-127.Podle kterého standardu?
Citace od: aaa kdy 15. 07. 2014, 08:30:44Jirsák: Jsi zřejmě jediný, kdo s tím má nějaký problém. Diskuze s tebou mi silně připomínají soudruha Laela a jeho motto "Budu mít poslední slovo, i kdyby hovna padaly".
Citace od: Kit kdy 15. 07. 2014, 08:33:29http://www.w3.org/TR/xml/#sec-guessing-no-ext-info
Citace od: Filip Jirsák kdy 15. 07. 2014, 09:16:56Citace od: Kit kdy 15. 07. 2014, 08:33:29http://www.w3.org/TR/xml/#sec-guessing-no-ext-infoAno, to je ten postup ono to v praxi funguje, protože se reálně těch kódování moc nepoužívá, ale univerzální postup použitelný pro jakoukoli sadu kódování neexistuje. Já vím, ono je to napsané až ve třetím odstavci odkazovaného textu, kdo by tak daleko dočetl, že... Takže stále platí, že opravdu univerzální řešení je jenom uvádět typ souboru a jeho kódování v metadatech mimo samotný obsah souboru.
Citace od: Filip Jirsák kdy 15. 07. 2014, 09:16:56Takže stále platí, že opravdu univerzální řešení je jenom uvádět typ souboru a jeho kódování v metadatech mimo samotný obsah souboru.
Citace od: Kit kdy 15. 07. 2014, 09:39:35Které kódování tímto postupem neprojde?
Citace od: Kit kdy 15. 07. 2014, 09:39:35Taky jsem mohl poslat odkaz bez kotvy, aby sis to mohl přečíst celé.
Citace od: Kolemjdoucí kdy 15. 07. 2014, 09:44:09Jestliže si nedokážeš představit natož realizovat algoritmus na detekci zda je počáteční <?xml 1-2-4 byte a little-big endian, pak s tebou diskuze na toto téma opravdu nemá smysl.