Re: kodovani cestiny v ruznych jazykovych sadach

2007-09-20 Tema obsahu Martin Kuba
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

2007-09-20 Tema obsahu Petr Burdik
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

2007-09-20 Tema obsahu Martin Kuba
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

2007-09-20 Tema obsahu Petr Burdik
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

2007-09-20 Tema obsahu Podlesak Kamil

> 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

2007-09-20 Tema obsahu Petr Burdik

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

2007-09-20 Tema obsahu jeeff

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

2007-09-20 Tema obsahu Petr Burdik
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

2007-09-20 Tema obsahu Petr Burdik

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

2007-09-20 Tema obsahu Podlesak Kamil
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

2007-09-20 Tema obsahu Podlesak Kamil
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

2007-09-20 Tema obsahu Petr Burdik
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

2007-09-20 Tema obsahu Jan Dvořák
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

2007-09-19 Tema obsahu Podlesak Kamil

> -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

2007-09-19 Tema obsahu Ján Čuchor



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

2007-09-19 Tema obsahu Podlesak Kamil
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

2007-09-18 Tema obsahu Josef Cacek
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

2007-09-18 Tema obsahu Ivan Vlcek


-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

2007-09-18 Tema obsahu Petr Burdik
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

2007-09-18 Tema obsahu Jaroslav Hurdes

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

2007-09-18 Tema obsahu Petr Burdik

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

2007-09-18 Tema obsahu Petr Burdik

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/ .