Re: kodovani cestiny v ruznych jazykovych sadach
Petr Burdik wrote: > Vystup z DB je v poradku. Problem byl v tom pristupu ven. Ja to musim > proste prekodovat az v komunikacnim rozhrani. Nechci si s tim hrat kdyz > mam 5 zpusobu jak to do te kasy ruzne dostat. Vcetne externich programu. > Imho pomuze ta prace s byte[]. > > Jeste pisnu vysledek. Moc diky vsem. Jenom nahradte soubor za socket, tj. Socket socket = new Socket(host,port); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream(),"Cp1250"))); out.println(radekZDatabaze); out.flush(); Makub -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- smime.p7s Description: S/MIME Cryptographic Signature
Re: kodovani cestiny v ruznych jazykovych sadach
Vystup z DB je v poradku. Problem byl v tom pristupu ven. Ja to musim proste prekodovat az v komunikacnim rozhrani. Nechci si s tim hrat kdyz mam 5 zpusobu jak to do te kasy ruzne dostat. Vcetne externich programu. Imho pomuze ta prace s byte[]. Jeste pisnu vysledek. Moc diky vsem. Pet On Thu, 20 Sep 2007 10:51:31 +0200, Martin Kuba <[EMAIL PROTECTED]> wrote: Petr Burdik wrote: Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Tahle konstrukce je dost nesmyslna. Jmeno promenne nameUTF8 vzbuzuje dojem, ze se jedna o UTF8 bajty, ale je to evidntne Java String, ktery je tvoren znaky. A ten prevedete na posloupnost bajtu v utf-8, a tu pak berete jako bajty v Cp1250 a udelate z toho zase Java String. Vysledek musi byt naprosty nesmysl, krome pripadu, kdy v promenne "nameUTF8" uz byl naprosty nesmysl vznikly nactenim Cp1220 bajtu omylem povazovanych za utf-8 bajty, pak se ty dva nesmysly navzajem vyrusi. Takze si rozmyslete, co vlastne potrebujete, a hlavne si uvedomte rozdil mezi *znaky* a *bajty*. String je retezec *znaku*, a prevodem na konkretni kodovani vznikne poslopnost *bajtu*. A naopak. Takze pokud mate na vstupu, treba z textoveho souboru, *bajty* v UTF-8, a chcete na vystupu *bajty* v CP1250, tak prevod probiha pouhym nactenim do Stringu a jeho opetovnym zapsanim, takhle: BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream("soubor_v_utf8.txt"),"utf-8")); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( new FileOutputStream("soubor_v_Cp1250.txt"),"Cp1250"))); String inputLine; while ((inputLine = in.readLine()) != null) { out.println(inputLine); } Psal jste puvodne cosi o databazi, ze je v UTF-8. To by melo byt uplne jedno, protoze je odpovednost JDBC ovladace, aby metoda ResultSet.getString() vracela javovy String, tedy probehlo prekodovani z bajtu v databazi na znaky ve Stringu. Kdysi (asi deset let zpatky) tohle nefungovalo v Postgresu, ale davno to funguje, a nezda se mi, ze by dnes existoval JDBC ovladac, ktery by prekodovani neprovadel spravne. Co pouzivate za databazi ? Makub -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
Petr Burdik wrote: > Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty > postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to > misto hacku a carek otazniky. Pouzivam ted toto: > > String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); > > Nevite cim by to mohlo byt? Tahle konstrukce je dost nesmyslna. Jmeno promenne nameUTF8 vzbuzuje dojem, ze se jedna o UTF8 bajty, ale je to evidntne Java String, ktery je tvoren znaky. A ten prevedete na posloupnost bajtu v utf-8, a tu pak berete jako bajty v Cp1250 a udelate z toho zase Java String. Vysledek musi byt naprosty nesmysl, krome pripadu, kdy v promenne "nameUTF8" uz byl naprosty nesmysl vznikly nactenim Cp1220 bajtu omylem povazovanych za utf-8 bajty, pak se ty dva nesmysly navzajem vyrusi. Takze si rozmyslete, co vlastne potrebujete, a hlavne si uvedomte rozdil mezi *znaky* a *bajty*. String je retezec *znaku*, a prevodem na konkretni kodovani vznikne poslopnost *bajtu*. A naopak. Takze pokud mate na vstupu, treba z textoveho souboru, *bajty* v UTF-8, a chcete na vystupu *bajty* v CP1250, tak prevod probiha pouhym nactenim do Stringu a jeho opetovnym zapsanim, takhle: BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream("soubor_v_utf8.txt"),"utf-8")); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( new FileOutputStream("soubor_v_Cp1250.txt"),"Cp1250"))); String inputLine; while ((inputLine = in.readLine()) != null) { out.println(inputLine); } Psal jste puvodne cosi o databazi, ze je v UTF-8. To by melo byt uplne jedno, protoze je odpovednost JDBC ovladace, aby metoda ResultSet.getString() vracela javovy String, tedy probehlo prekodovani z bajtu v databazi na znaky ve Stringu. Kdysi (asi deset let zpatky) tohle nefungovalo v Postgresu, ale davno to funguje, a nezda se mi, ze by dnes existoval JDBC ovladac, ktery by prekodovani neprovadel spravne. Co pouzivate za databazi ? Makub -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- smime.p7s Description: S/MIME Cryptographic Signature
Re: kodovani cestiny v ruznych jazykovych sadach
Aha, moc diky. Tak ted uz je to naprosto jasne. Jdu to predelat. Snad uz to bude v pohode. Pet On Thu, 20 Sep 2007 10:46:47 +0200, Podlesak Kamil <[EMAIL PROTECTED]> wrote: Dobry den, ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v kodovani CP1250. Tedy to textoveho file. V tom případě to máte špatně, tento kód je naprostý nesmysl: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Možná bych měl zdůraznit jednu důležitou věc: java.lang.String nemá žádné kódování !!! Neexistuje String v kódování UTF8, neexistuje String v kódování CP1250. String je prostě text, interně sice používá unicode, ale to je implementační detail. O kódování (charset) se má smysl bavit jen pokud pracujeme s binárními daty, tedy byte[] nebo OuputStream/InputStream. Správný kód tedy je: byte[] nameCP1250 = name.getBytes("CP1250"); sendName(nameCP1250) Kamil Podlešák -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Petr Burdik Sent: Thursday, September 20, 2007 10:37 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Dobry den, ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v kodovani CP1250. Tedy to textoveho file. Pet On Thu, 20 Sep 2007 10:33:00 +0200, Podlesak Kamil <[EMAIL PROTECTED]> wrote: > Zdravim, > >> String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); > > Takže pokud tomu rozumím, míte data v cp1250 ale díky nějaké chybě je > načítáte jako UTF8, čímž vznikne nesmyslný String. > Ten pak touto řádkou opravujete do správné podoby (provedete konverzi > zpět do původních bytes a pak provedete tu správnou). > Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] > do > byte[]->String->byte[] > > > Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku > na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je > možné, pokud to dělá například Tomcat). > > Kamil Podlešák > >> -Original Message- >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Petr Burdik Sent: Thursday, September 20, 2007 10:17 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Pet On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák <[EMAIL PROTECTED]> wrote: > > Honza Dvorak -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ . -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
RE: kodovani cestiny v ruznych jazykovych sadach
> Dobry den, > ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v > kodovani CP1250. Tedy to textoveho file. V tom případě to máte špatně, tento kód je naprostý nesmysl: > String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Možná bych měl zdůraznit jednu důležitou věc: java.lang.String nemá žádné kódování !!! Neexistuje String v kódování UTF8, neexistuje String v kódování CP1250. String je prostě text, interně sice používá unicode, ale to je implementační detail. O kódování (charset) se má smysl bavit jen pokud pracujeme s binárními daty, tedy byte[] nebo OuputStream/InputStream. Správný kód tedy je: byte[] nameCP1250 = name.getBytes("CP1250"); sendName(nameCP1250) Kamil Podlešák > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Petr Burdik > Sent: Thursday, September 20, 2007 10:37 AM > To: Java > Subject: Re: kodovani cestiny v ruznych jazykovych sadach > > > Dobry den, > ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v > kodovani CP1250. Tedy to textoveho file. > > Pet > > > On Thu, 20 Sep 2007 10:33:00 +0200, Podlesak Kamil > <[EMAIL PROTECTED]> wrote: > > > Zdravim, > > > >> String nameCP1250 = new String( nameUTF8.getBytes("utf8"), > "CP1250" ); > > > > Takže pokud tomu rozumím, míte data v cp1250 ale díky > nějaké chybě je > > načítáte jako UTF8, čímž vznikne nesmyslný String. > > Ten pak touto řádkou opravujete do správné podoby > (provedete konverzi > > zpět do původních bytes a pak provedete tu správnou). > > Samozřejmě tento postup není zaručen že musí fungovat. > Konverze z byte[] > > do > > byte[]->String->byte[] > > > > > > Je otázka kde přesně je příčina a zda nebude lepší uvést > vše do pořádku > > na místě kde se ten 1250 text špatně načítá poprvé (i když > ne vždy to je > > možné, pokud to dělá například Tomcat). > > > > Kamil Podlešák > > > >> -Original Message- > >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] >> Behalf Of Petr Burdik >> Sent: Thursday, September 20, 2007 10:17 AM >> To: Java >> Subject: Re: kodovani cestiny v ruznych jazykovych sadach >> >> >> Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu >> meli ty >> postupy k prekodovani z utf na cp1250, tak to se mi nedari. >> Vyhodi mi to >> misto hacku a carek otazniky. Pouzivam ted toto: >> >> String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); >> >> Nevite cim by to mohlo byt? >> >> Pet >> >> >> On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák >> <[EMAIL PROTECTED]> >> wrote: >> >> > >> > Honza Dvorak >> >> >> >> -- >> Zpráva vytvořena poštovním klientem "M2", který je součástí webového >> prohlížeče Opera. >> Více na http://www.opera.com/mail/ . >> -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
Ahoj, jenomze to do souboru vubec nejde. Chapej, ja musim ten jeden radek prekodovat kdyz ho posilam kase. To neni ze vemu soubor a otrocky ho ctu. Je tam nekolik zpusobu jak to udelat. Takze resim prekodovani danych casti na spravne kodovani. Posilam to do kasy pres tcp/ip. Pet On Thu, 20 Sep 2007 10:41:13 +0200, jeeff <[EMAIL PROTECTED]> wrote: Ahoj, ak mas data v Jave nacitane spravne, tak neries ich prekodovanie cez Stringy, ale ak to zapisujes do suboru, tak si nastav spravne kodovanie zapisu do toho suboru, nieco ako: OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream(f), "windows-1250"); osw.write(data); osw.close(); to ti zapise data do suboru v zadanom kodovani. Petr Burdik wrote / napísal(a): Dobry den, ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v kodovani CP1250. Tedy to textoveho file. Pet On Thu, 20 Sep 2007 10:33:00 +0200, Podlesak Kamil <[EMAIL PROTECTED]> wrote: Zdravim, String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Takže pokud tomu rozumím, míte data v cp1250 ale díky nějaké chybě je načítáte jako UTF8, čímž vznikne nesmyslný String. Ten pak touto řádkou opravujete do správné podoby (provedete konverzi zpět do původních bytes a pak provedete tu správnou). Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] do byte[]->String->byte[] Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je možné, pokud to dělá například Tomcat). Kamil Podlešák -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Petr Burdik Sent: Thursday, September 20, 2007 10:17 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Pet On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák <[EMAIL PROTECTED]> wrote: > > Honza Dvorak -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ . -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
Ahoj, ak mas data v Jave nacitane spravne, tak neries ich prekodovanie cez Stringy, ale ak to zapisujes do suboru, tak si nastav spravne kodovanie zapisu do toho suboru, nieco ako: OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream(f), "windows-1250"); osw.write(data); osw.close(); to ti zapise data do suboru v zadanom kodovani. Petr Burdik wrote / napísal(a): Dobry den, ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v kodovani CP1250. Tedy to textoveho file. Pet On Thu, 20 Sep 2007 10:33:00 +0200, Podlesak Kamil <[EMAIL PROTECTED]> wrote: Zdravim, String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Takže pokud tomu rozumím, míte data v cp1250 ale díky nějaké chybě je načítáte jako UTF8, čímž vznikne nesmyslný String. Ten pak touto řádkou opravujete do správné podoby (provedete konverzi zpět do původních bytes a pak provedete tu správnou). Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] do byte[]->String->byte[] Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je možné, pokud to dělá například Tomcat). Kamil Podlešák -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Petr Burdik Sent: Thursday, September 20, 2007 10:17 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Pet On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák <[EMAIL PROTECTED]> wrote: > > Honza Dvorak -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ . -- jeeff
Re: kodovani cestiny v ruznych jazykovych sadach
Jeste jinak. Mam katalog v UTF8. Vygeneruji jakoby textovy file ktery posilam do kasy. Cele je to jenom memory-like operace. Posilam tam radek po radku. Minutove zmeny. Takze kdyz je zmena, tak se da do fronty ( jeden radek ) a poslu ho do kasy kdyz je potreba. Pet On Thu, 20 Sep 2007 10:37:01 +0200, Petr Burdik <[EMAIL PROTECTED]> wrote: Dobry den, ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v kodovani CP1250. Tedy to textoveho file. Pet On Thu, 20 Sep 2007 10:33:00 +0200, Podlesak Kamil <[EMAIL PROTECTED]> wrote: Zdravim, String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Takže pokud tomu rozumím, míte data v cp1250 ale díky nějaké chybě je načítáte jako UTF8, čímž vznikne nesmyslný String. Ten pak touto řádkou opravujete do správné podoby (provedete konverzi zpět do původních bytes a pak provedete tu správnou). Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] do byte[]->String->byte[] Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je možné, pokud to dělá například Tomcat). Kamil Podlešák -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Petr Burdik Sent: Thursday, September 20, 2007 10:17 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Pet On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák <[EMAIL PROTECTED]> wrote: > > Honza Dvorak -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ . -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
Dobry den, ne mam data v katalogu vyrobku v utf8. Potrebuji to poslat do kasy v kodovani CP1250. Tedy to textoveho file. Pet On Thu, 20 Sep 2007 10:33:00 +0200, Podlesak Kamil <[EMAIL PROTECTED]> wrote: Zdravim, String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Takže pokud tomu rozumím, míte data v cp1250 ale díky nějaké chybě je načítáte jako UTF8, čímž vznikne nesmyslný String. Ten pak touto řádkou opravujete do správné podoby (provedete konverzi zpět do původních bytes a pak provedete tu správnou). Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] do byte[]->String->byte[] Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je možné, pokud to dělá například Tomcat). Kamil Podlešák -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Petr Burdik Sent: Thursday, September 20, 2007 10:17 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Pet On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák <[EMAIL PROTECTED]> wrote: > > Honza Dvorak -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ . -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
RE: kodovani cestiny v ruznych jazykovych sadach
Předchozí pokus se nepovedl, bohužel nemám po ruce použitelný mailový klient :-( Zdravim, > String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Takže pokud tomu rozumím, máte data v cp1250 ale díky nějaké chybě je načítáte jako UTF8, čímž vznikne nesmyslný String. Ten pak touto řádkou opravujete do správné podoby (provedete konverzi zpět do původních bytes a pak provedete tu správnou). byte[]->String->byte[]->String Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] do String totiž není plně reverzibilní a pokud původní text obsahoval chybné sekvence, dosadí se otazníky. Při dvojím překódování tedy nemusí být finální výsledek totéž co původní data. Navíc je poměrně těžké udržet pozornost a přehled o tom, co je převedeno správně a co špatně. Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je možné, pokud to dělá například Tomcat). Kamil Podlešák > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Petr Burdik > Sent: Thursday, September 20, 2007 10:17 AM > To: Java > Subject: Re: kodovani cestiny v ruznych jazykovych sadach > > > Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu > meli ty > postupy k prekodovani z utf na cp1250, tak to se mi nedari. > Vyhodi mi to > misto hacku a carek otazniky. Pouzivam ted toto: > > String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); > > Nevite cim by to mohlo byt? > > Pet > > > On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák > <[EMAIL PROTECTED]> > wrote: > > > > > Honza Dvorak > > > > -- > Zpráva vytvořena poštovním klientem "M2", který je součástí webového > prohlížeče Opera. > Více na http://www.opera.com/mail/ . >
RE: kodovani cestiny v ruznych jazykovych sadach
Zdravim, > String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Takže pokud tomu rozumím, míte data v cp1250 ale díky nějaké chybě je načítáte jako UTF8, čímž vznikne nesmyslný String. Ten pak touto řádkou opravujete do správné podoby (provedete konverzi zpět do původních bytes a pak provedete tu správnou). Samozřejmě tento postup není zaručen že musí fungovat. Konverze z byte[] do byte[]->String->byte[] Je otázka kde přesně je příčina a zda nebude lepší uvést vše do pořádku na místě kde se ten 1250 text špatně načítá poprvé (i když ne vždy to je možné, pokud to dělá například Tomcat). Kamil Podlešák > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Petr Burdik > Sent: Thursday, September 20, 2007 10:17 AM > To: Java > Subject: Re: kodovani cestiny v ruznych jazykovych sadach > > > Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu > meli ty > postupy k prekodovani z utf na cp1250, tak to se mi nedari. > Vyhodi mi to > misto hacku a carek otazniky. Pouzivam ted toto: > > String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); > > Nevite cim by to mohlo byt? > > Pet > > > On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák > <[EMAIL PROTECTED]> > wrote: > > > > > Honza Dvorak > > > > -- > Zpráva vytvořena poštovním klientem "M2", který je součástí webového > prohlížeče Opera. > Více na http://www.opera.com/mail/ . >
Re: kodovani cestiny v ruznych jazykovych sadach
Pouzivate ji i na prekodovani do jinych kodovani? Jak jsme tu meli ty postupy k prekodovani z utf na cp1250, tak to se mi nedari. Vyhodi mi to misto hacku a carek otazniky. Pouzivam ted toto: String nameCP1250 = new String( nameUTF8.getBytes("utf8"), "CP1250" ); Nevite cim by to mohlo byt? Pet On Thu, 20 Sep 2007 10:08:53 +0200, Jan Dvořák <[EMAIL PROTECTED]> wrote: Honza Dvorak -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
Ano, knihovnu ICU4J od IBM pouzivame pro odstranovani diakritiky s uspechem uz par let. Honza Dvorak MathAn Praha Josef Cacek napsal: Ahojte, On 9/19/07, Petr Burdik <[EMAIL PROTECTED]> wrote: Jeste jednou moc diky. to odstraneni diakritiky nijak moc nespecha, ale mrknu urcite. Zkuste mrknout tady: http://www.rgagnon.com/javadetails/java-0456.html Pekny den Pet -- pepa cacek
RE: kodovani cestiny v ruznych jazykovych sadach
> -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Podlesak Kamil > Sent: Wednesday, September 19, 2007 9:11 AM > To: Java > Subject: RE: kodovani cestiny v ruznych jazykovych sadach > > > Alternativou (a casto jednodussi) je pouzit prime konverzni > metody v String nebo InputStreamReader/OutputStreamWriter. Ty > jsou k dispozici jiz od JDK 1.1, ale nejsou vhodne pro > prekodovani mezi dvema sadami (zbytecne se koduje dvakrat > z/do char/String). Jeste abych se opravil: i pri pouziti Charset (CharsetEncoder, CharsetDecoder) konverze probiha pres char, ale nemusi probihat ani blokove (String) ani proudove, ale po bufferech. Ve vetsine pripadu to za rucni praci nestoji... Kamil Podlesak
Re: kodovani cestiny v ruznych jazykovych sadach
Možno nieco taketo pomoze public static String removeDiak(String retazec){ String retazecBD=""; String sdiak="áäčďěéíĺžňóöôŕřšťúüýžźÁÄČĎĚÉÍĹŇÓÖÔŔŘÚÜÝŽŐőÖöŰűÜü"; String bdiak="aacdeeillnooorrstuuyzzAACDEEILLNOOORRTUUYZOoOoUuUu"; for (int l=0;l- Original Message - From: "Ivan Vlcek" <[EMAIL PROTECTED]> To: "'Java'" Sent: Wednesday, September 19, 2007 8:47 AM Subject: RE: kodovani cestiny v ruznych jazykovych sadach -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Petr Burdik Sent: Wednesday, September 19, 2007 8:33 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Diky, to je presne ono. Prakticky jste udelal to co ja kdyz to prijimam v jinem kodovani, akorat mi chybela ta cast utf8String.getBytes("utf8"). Jeste jednou moc diky. to odstraneni diakritiky nijak moc nespecha, ale mrknu urcite. Ahoj taky mne to ceka, mohl bys pak napsat nejake info jak na to odstraneni diakritiky. Dekuji ivlcek Pekny den Pet On Wed, 19 Sep 2007 08:27:21 +0200, Jaroslav Hurdes <[EMAIL PROTECTED]> wrote: No jde to udelat pomoci Stringu utf8 na cp1250: String cp1250String = new String(utf8String.getBytes("utf8"),"cp1250"); a podobne. Lze to pouzit na knverzi mezi vsemi znakovymi sadami co java podporuje. Co se tyce odstraneni diakritiky, tak to si bud musite napsat sam, nebo pohledat. Petr Burdik napsal(a): Ahojte, resim ted problem cestiny mezi nekolika zarizenimi. Databaze jede v utf8 a hledam nejakou knihovnu, ktera by mi pomohla prekodovat data i do dalsich kodovani. A v jednom pripade prekodovat i opacne do utf8. Poradite mi prosim jakou knihovnu pouzit? utf8 -> windows-1250 utf8 -> iso-8859-1 - cesky text bez diakritiky ibm-852 -> utf8 Pekny den Pet -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ . __ Informacia od NOD32 2540 (20070919) __ Tato sprava bola preverena antivirusovym systemom NOD32. http://www.eset.sk
RE: kodovani cestiny v ruznych jazykovych sadach
Zdravim, SUN JVM (ale IBM take) podporuje mnoho a mnoho kodovani, rozhodne vic nez vetsina lidi potrebuje (i kdyz zrovna nedavno jsem vyuzil i EBCDIC :-). Kodovani je (od 1.4) reprezentovano objektem java.nio.Charset, ten lze primo pouzit pro konverzi. Seznam (vcetne aliasu) lze zjistit statickou metodou Charset.availableCharset(). Vice viz javadoc. Alternativou (a casto jednodussi) je pouzit prime konverzni metody v String nebo InputStreamReader/OutputStreamWriter. Ty jsou k dispozici jiz od JDK 1.1, ale nejsou vhodne pro prekodovani mezi dvema sadami (zbytecne se koduje dvakrat z/do char/String). Co se tyce odstranovani diakritiky, tak to je slozitejsi. Nejlepsi reseni je vygenerovat si primo konverzni tabulku (jedna je to nejrychlejsi, jednak to umoznuje upravit pripadne chytaky pro urcity jazyk. Tabulku lze vygenerovat z UNICODE informaci (lze stahnout z http://www.unicode.org/Public/UNIDATA/UnicodeData.txt, pripadne pouzit nejakou knihovnu) kde je uvedena kanonicka dekompozice (tj. napriklad č je rozlozeno na dva znaky: 0063=c a 030C=hacek). V Jave 1.6 je jiz kanonicka dekompozice k dispozici primo, ve tride java.text.Normalizer - takze v podstate staci zavolat Normalizer.normalize(str, Normalizer.NFD) a odfirltrovat vsechna diakriticka znamenka (stejne ale doporucuji toto udelat jednou a vygenerovat tabulku). No, myslim ze je to vycerpavajici, snad jen Kamil Podlesak > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Petr Burdik > Sent: Wednesday, September 19, 2007 8:18 AM > To: Java > Subject: kodovani cestiny v ruznych jazykovych sadach > > > Ahojte, > resim ted problem cestiny mezi nekolika zarizenimi. Databaze > jede v utf8 a > hledam nejakou knihovnu, ktera by mi pomohla prekodovat data > i do dalsich > kodovani. A v jednom pripade prekodovat i opacne do utf8. > Poradite mi > prosim jakou knihovnu pouzit? > > utf8 -> windows-1250 > utf8 -> iso-8859-1 - cesky text bez diakritiky > utf8 -> ibm-852 > > Naopak to umim. Ale takto ne. Vim ze jsme se tu o tom kdysi > bavili, ale > google mi vraci pri konverzich misto javy php. Ale mozna by > to chtelo > jenom jine zadavani. > > Pekny den > Pet > > -- > Zpráva vytvořena poštovním klientem "M2", který je součástí webového > prohlížeče Opera. > Více na http://www.opera.com/mail/ . >
Re: kodovani cestiny v ruznych jazykovych sadach
Ahojte, On 9/19/07, Petr Burdik <[EMAIL PROTECTED]> wrote: > Jeste jednou moc diky. to odstraneni diakritiky nijak moc nespecha, ale > mrknu urcite. Zkuste mrknout tady: http://www.rgagnon.com/javadetails/java-0456.html > Pekny den > Pet -- pepa cacek
RE: kodovani cestiny v ruznych jazykovych sadach
-Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Petr Burdik Sent: Wednesday, September 19, 2007 8:33 AM To: Java Subject: Re: kodovani cestiny v ruznych jazykovych sadach Diky, to je presne ono. Prakticky jste udelal to co ja kdyz to prijimam v jinem kodovani, akorat mi chybela ta cast utf8String.getBytes("utf8"). Jeste jednou moc diky. to odstraneni diakritiky nijak moc nespecha, ale mrknu urcite. Ahoj taky mne to ceka, mohl bys pak napsat nejake info jak na to odstraneni diakritiky. Dekuji ivlcek Pekny den Pet On Wed, 19 Sep 2007 08:27:21 +0200, Jaroslav Hurdes <[EMAIL PROTECTED]> wrote: > No jde to udelat pomoci Stringu > > utf8 na cp1250: String cp1250String = new > String(utf8String.getBytes("utf8"),"cp1250"); > a podobne. Lze to pouzit na knverzi mezi vsemi znakovymi sadami co java > podporuje. Co se tyce odstraneni diakritiky, tak to si bud musite napsat > sam, nebo pohledat. > > > Petr Burdik napsal(a): >> Ahojte, >> resim ted problem cestiny mezi nekolika zarizenimi. Databaze jede v >> utf8 a hledam nejakou knihovnu, ktera by mi pomohla prekodovat data i >> do dalsich kodovani. A v jednom pripade prekodovat i opacne do utf8. >> Poradite mi prosim jakou knihovnu pouzit? >> >> utf8 -> windows-1250 >> utf8 -> iso-8859-1 - cesky text bez diakritiky >> ibm-852 -> utf8 >> >> >> Pekny den >> Pet >> > -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
Diky, to je presne ono. Prakticky jste udelal to co ja kdyz to prijimam v jinem kodovani, akorat mi chybela ta cast utf8String.getBytes("utf8"). Jeste jednou moc diky. to odstraneni diakritiky nijak moc nespecha, ale mrknu urcite. Pekny den Pet On Wed, 19 Sep 2007 08:27:21 +0200, Jaroslav Hurdes <[EMAIL PROTECTED]> wrote: No jde to udelat pomoci Stringu utf8 na cp1250: String cp1250String = new String(utf8String.getBytes("utf8"),"cp1250"); a podobne. Lze to pouzit na knverzi mezi vsemi znakovymi sadami co java podporuje. Co se tyce odstraneni diakritiky, tak to si bud musite napsat sam, nebo pohledat. Petr Burdik napsal(a): Ahojte, resim ted problem cestiny mezi nekolika zarizenimi. Databaze jede v utf8 a hledam nejakou knihovnu, ktera by mi pomohla prekodovat data i do dalsich kodovani. A v jednom pripade prekodovat i opacne do utf8. Poradite mi prosim jakou knihovnu pouzit? utf8 -> windows-1250 utf8 -> iso-8859-1 - cesky text bez diakritiky ibm-852 -> utf8 Pekny den Pet -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
Re: kodovani cestiny v ruznych jazykovych sadach
No jde to udelat pomoci Stringu utf8 na cp1250: String cp1250String = new String(utf8String.getBytes("utf8"),"cp1250"); a podobne. Lze to pouzit na knverzi mezi vsemi znakovymi sadami co java podporuje. Co se tyce odstraneni diakritiky, tak to si bud musite napsat sam, nebo pohledat. Petr Burdik napsal(a): Ahojte, resim ted problem cestiny mezi nekolika zarizenimi. Databaze jede v utf8 a hledam nejakou knihovnu, ktera by mi pomohla prekodovat data i do dalsich kodovani. A v jednom pripade prekodovat i opacne do utf8. Poradite mi prosim jakou knihovnu pouzit? utf8 -> windows-1250 utf8 -> iso-8859-1 - cesky text bez diakritiky ibm-852 -> utf8 Pekny den Pet
kodovani cestiny v ruznych jazykovych sadach
Ahojte, resim ted problem cestiny mezi nekolika zarizenimi. Databaze jede v utf8 a hledam nejakou knihovnu, ktera by mi pomohla prekodovat data i do dalsich kodovani. A v jednom pripade prekodovat i opacne do utf8. Poradite mi prosim jakou knihovnu pouzit? utf8 -> windows-1250 utf8 -> iso-8859-1 - cesky text bez diakritiky ibm-852 -> utf8 Pekny den Pet -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .
kodovani cestiny v ruznych jazykovych sadach
Ahojte, resim ted problem cestiny mezi nekolika zarizenimi. Databaze jede v utf8 a hledam nejakou knihovnu, ktera by mi pomohla prekodovat data i do dalsich kodovani. A v jednom pripade prekodovat i opacne do utf8. Poradite mi prosim jakou knihovnu pouzit? utf8 -> windows-1250 utf8 -> iso-8859-1 - cesky text bez diakritiky utf8 -> ibm-852 Naopak to umim. Ale takto ne. Vim ze jsme se tu o tom kdysi bavili, ale google mi vraci pri konverzich misto javy php. Ale mozna by to chtelo jenom jine zadavani. Pekny den Pet -- Zpráva vytvořena poštovním klientem "M2", který je součástí webového prohlížeče Opera. Více na http://www.opera.com/mail/ .