[Java lista] String karakter konverzio

Stef stefhun at gmail.com
2006. Nov. 26., V, 08:48:00 CET


Sziasztok!

Latom sikerult jol felkavarnom az allovizet, akaratomon kivul.
Mint irtam hibernate-et hasznalok, es az adatbazis (postgreSQL)
kodolasat atallitottam UTF-8-ra, amivel azt ertem el, hogynem dob JDBC
hibat, de tovabbra sincs jo eredmenyem.
Gondban vagyok, mert a Gödöllő szóból log-ban ezt látom: G?¶d?¶ll??
Tehat az ekezetes karakterek helyen ket(!) teljesen mas karaktert latok.

Hogyan fejtsem meg, hogy mi a baj? A kapott string ugye unicode
kódolású, de mivel jvm-ben vagyok, ezért az UTF-8 -on van ábrázolva.
Ok. De hogyan tudom meg, hogy egy rosszul összerakott stringet
kapok-e?
Egyáltalán merre induljak el?

Udv!
Stef

2006/11/24, Hollósi Balázs <hollosibalazs at gmail.com>:
> Ha jol latom ez sima jdbc (adatbazis) hiba. Mit hasznalsz? nem lehet
> hogy egyszeruen csak a db encoding-et kellene utf8-ra allitani win1250
> helyett?
>
> B
>
> On 11/24/06, Stef <stefhun at gmail.com> wrote:
> > Szia!
> >
> > Mivel kezdo vagyok, ezert alapveto hibakat ejtek :-(
> > Felvazolom a teljes kepet:
> > Adott egy tapestry4-es alkalmazas, mely hibernate-et hasznal, es az
> > egyik POJO property-jet a tacos autocompleter komponensevel jeleniti
> > meg.
> > Ezen komponens egy "forrasa" a kovetkezo lehet: "Object, String[], or
> > Collection".
> > En a collection-ra szavaztam.
> > Atadom a forrast, a komponens megjeleniti azt, majd a felhasznalo ha
> > elkezd gepeli, akkor az egy kerest kuld, hogy az adott karakterre
> > milyen ajanlatokat kell megjeleniteni, majd a kapott eredmenyt
> > megjeleniti, es a felhasznalo vagy tovabb gepel, vagy a listabol
> > valaszt egy erteket.
> > Ezen keres soran egy hibat dob a hibernate:
> > 12:38:29,180 ERROR JDBCExceptionReporter:72 - ERROR: character 0xc3a3
> > of encoding "UTF8" has no equivalent in "WIN1250"
> > Hiba a helységek listázásánál : could not execute query
> >
> > Arra gondoltam, hogy a szoveget kellene atkodolni, de ez ertelmetlenne
> > valik, mivel az unicode formatumu (tenyleg mondtak ezt a tanfolyamon
> > :-) ). A logbol pedig lehet latni, hogy ket karakter lesz az ekezetes
> > betukbol, mintha az UTF-8 2 byte-ja lenne az adott string adott
> > poziciojaban... tudom, ez is ertelmetlen.
> >
> > Az autocompleter a dojo-t hasznalja, mely olvasatomban a kereseket
> > UTF-8-ra kodolja.
> >
> > Arra gyanakszom, hogy a tapestry engine nem jol kodolja vissza az
> > url-t, es rossz lesz a fuggvenyhivas, hiszen az en kereso fugvenyemet
> > a tapestry engine hivja meg az adott parameterrel.
> > Ha jol tudom valami ilyesmi kapcsolat all fennt:
> > dojo request -> tomcat -> tapestry engine -> my_search()
> >
> >
> > Udv!
> > Stef
> >
> > 2006/11/24, bognár attila <attila at netalfa.hu>:
> > >
> > >  Szia,
> > >
> > >  amit leírtam az alapján az alábbi kódnak semmi értelme.
> > >
> > >  az első probléma abban rejlik, hogy amit visszaadsz, az String, annak pedig
> > > semmi köze az akármilyen kódoláshoz, kivéve a Unicode-ot.
> > >
> > >  mit akarsz elérni, miből - mert ez sem tiszta?
> > >
> > >  üdv,
> > >
> > >  attila
> > >
> > >
> > >  Stef írta:
> > >  Sziasztok!
> > >
> > > Koszonom a sok valaszt, de sajnos nem jutottam eredmenyre.
> > > Olyan, mintha csak az ekezetes karakter lenne mas kodolasba.
> > > Eredetileg ezt lattam a logban: "G?¶" - 0xc3a3
> > > Az atkodolas utan pedig: "G�¶" - 0xefbfbd
> > > Tehat tovabb kodolta a kodolast :-(
> > >
> > > Ezt alkottam a javaslatokbol:
> > >  private String convertUTFWin1250(String value){
> > >  byte[] utf8 = null;
> > >  String win1250 = null;
> > >  try {
> > >  utf8 = value.getBytes("UTF-8");
> > >  win1250 = new String(utf8, "windows-1250");
> > >  } catch (UnsupportedEncodingException e) {
> > >  e.printStackTrace();
> > >  }
> > >  return win1250;
> > >  }
> > >
> > > Udv!
> > > Stef
> > >
> > > 2006/11/24, Fisha <fisha at freemail.hu>:
> > >
> > >
> > >  Hello!
> > >
> > > Szerintem a String.getBytes a baratod.
> > >
> > > Fisha mailto:fisha at freemail.hu
> > >
> > >
> > >
> > >  Sziasztok!
> > >
> > >
> > >  Segitsetek....
> > > Hogyan lehetseges egy String-et atkonvertalni egyik kodolasrol a
> > > masikra. Jelen esetben az UTF-8 kodlaprol kellene win1250-re, de csak
> > > az URLenocder-t, talaltam, ami nem String konverzio, hanem web-app url
> > > kodolasra valo.
> > > Pontosabban nem a teljes String-et kellene átkódolni, mert nem minden
> > > karakter utf8.
> > > Ezt latom a logban: "H??" Ami valojaban a "Há" lenne.
> > >
> > >
> > >  A JDBC-s hiba uzenetem: 11:02:28,292 ERROR JDBCExceptionReporter:72 -
> > > ERROR: character 0xc3a3 of encoding "UTF8" has no equivalent in
> > > "WIN1250"
> > >
> > >
> > >  Esetleg a magyar ekezetes karakterekre sajat konvertert kell irnom,
> > > ami karakterenkent elemez, es ha kell konvertal?
> > >
> > >
> > >  Udv!
> > > Stef
> > > _______________________________________________
> > > Javalist mailing list
> > > Javalist at javagrund.hu
> > > http://javagrund.hu/mailman/listinfo/javalist
> > >
> > >  _______________________________________________
> > > Javalist mailing list
> > > Javalist at javagrund.hu
> > > http://javagrund.hu/mailman/listinfo/javalist
> > >
> > >
> > >  _______________________________________________
> > > Javalist mailing list
> > > Javalist at javagrund.hu
> > > http://javagrund.hu/mailman/listinfo/javalist
> > >
> > >
> > > _______________________________________________
> > > Javalist mailing list
> > > Javalist at javagrund.hu
> > > http://javagrund.hu/mailman/listinfo/javalist
> > >
> > >
> > >
> > _______________________________________________
> > Javalist mailing list
> > Javalist at javagrund.hu
> > http://javagrund.hu/mailman/listinfo/javalist
> >
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>


További információk a(z) Javalist levelezőlistáról