[ mar8 @ 06.06.2010. 21:58 ] @
Problem je sledeći:
Tabela u MySQL bazi ima podešen charset na utf8 i Collation na utf8_general_ci. Kada direktno preko MySQL Query Browsera unesem ćirilična slova, sve je OK.
Problem se javlja kada iz JSF aplikacije pomoću UPDATE upita upisujem u bazu. U Query Browser-u umesto slova prikaže ???.

Probavao sam kao u PHP-u da napravim upit:
String upit = "SET names 'utf8'";
stmt.executeQuery(upit);
ali se opet dešava ista stvar.

Zna li neko kako da ovo izvedem?
Hvala!

[ bantu @ 07.06.2010. 07:19 ] @
To trebas da postavis u connection stringu, nisam siguran kako ide, nesto tipa encodeing=UTF8, proguglaj malo.
Takođe, potrebno je da ti web strnice budu u utf8 cp.
[ boske3 @ 07.06.2010. 07:47 ] @
Evo resenja :)

TEKST:

1. JSP stranice moraju biti ukljucene u header

<%@ page
contentType="text/html; charset=UTF-8"
%>

2. U catalina.bat (prica vazi za windows) ili catalina.sh (windows) mora se dodati jedna linija:

-Dfile.encoding=UTF-8


3. Potrebno je da se ukljuci jedna metoda za konverziju ISO-8859-1 u UTF-8.Nju koristi konstantno

/**
* Convert ISO8859-1 format string (which is the default sent by IE
* to the UTF-8 format that the database is in.
*/
public String toUTF8(String isoString)
{
String utf8String = null;
if (null != isoString && !isoString.equals(""))
{
try
{
byte[] stringBytesISO = isoString.getBytes("ISO-8859-1");
utf8String = new String(stringBytesISO, "UTF-8");
}
catch(UnsupportedEncodingException e)
{
// As we can't translate just send back the best guess.
System.out.println("UnsupportedEncodingException is: " +
e.getMessage());
utf8String = isoString;
}
}
else
{
utf8String = isoString;
}
return utf8String;
}

Ovo su tri kljucna koraka koja moras da uradis.

I na kraju jedna jako bitn stvar (bey ovoga sam i dalje imao problema sa UTF-8

U $CATALINA_HOME/conf/server.xml dodaj podrsku za UTF-8 konektor. Npr:

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"/>

Posle toga treba sve da radi kao sat :)
[ mar8 @ 07.06.2010. 15:12 ] @
Nije mi jasno par stvari.
Je li ovo podesavanje za Tomcat? Server mi je glassfish, ali nije problem, mogao bih da pređem na Tomcat.
Našao sam Catalina.bat - smem li da dodam onu naredbu bilo gde ili mora na odredjeno mesto.
Gde da snimim ovu funkciju? Kako da je koristim svaki put - jel nakon što napravim konekciju, ili pre svakog upisa u bazu ili šta. U koju klasu da je stavim?

Bio bih ti puno zahvalan na pojašnjenju.
[ boske3 @ 08.06.2010. 08:11 ] @
Upravo su podesavanja za Tomcat za Glassfish i ostale stvari pogledaj ovaj link

http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Encoding

Takodje znam da se vrsi podesavanje u Glassfishu u sun-web.xml na sledeci nacin

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN" "http://www.sun.com/software/su...ver/dtds/sun-web-app_2_4-0.dtd">

<sun-web-app>
<locale-charset-info default-locale="">
<locale-charset-map locale="" charset=""/>
<parameter-encoding default-charset="UTF-8"/>
</locale-charset-info>
</sun-web-app>

Probaj i ovo pa ces videti mada mislim da mozes UTF-8 u Glassfish-u podesiti kroz admin konzolu

Kada dodajes kod u catalina.bat moras da pazis gde ga stavljas -Dfile.encoding=UTF-8
jer on konfigurise podesavanja java vm pogledaj ceo fajl pa ces naci deo koji se odnosi na to.

[ mar8 @ 08.06.2010. 22:33 ] @
Nije toliko važno za Glassfish - prešao sam na Tomcat 6.0.18. Uradio sam sve što si napisao ali i dalje imam problem jer neprestano dobijam ????.
Guglao sam po netu za -Dfile.encoding i ubacio sam ga ali nisam siguran da li je OK - imas li iz nekog projekta u kome si ovo koristio da vidis gde se tacno postavlja.

Isto me buni ova funkcija toUTF() - gde da je koristim. Je li u beanu u set() metodi kada prihvatam vrednost iz npr. formulara?
[ boske3 @ 09.06.2010. 07:58 ] @
Nazalost nemam taj projekat , a sto se tice toUTF8 metode , ja sam licno napravio
UTF klasu sa metodom toUTF8(String s) koju pozivam kroz JSP kod
i prosledjujem neki string parametar na konveryiju ovoj metodi
a reyltat prikayujem na ekranu i upisujem u bazu.

NPR.
<body>
...
<%
...
String grupa = UTF.toUTF8(request.getParameter("grupa"));
%>

Odgovor je: <%=grupa%>
...
</body>
[ mar8 @ 09.06.2010. 12:48 ] @
Ali i dalje mi nije jasno kako to da upotrebim na JSF stranici. Imam na primer formu i u okviru nje

<h:inputText value="#{registracijaBean.ime}"/>

Kako tu da uglavim poziv ove metode?