[ infob @ 15.07.2010. 15:22 ] @
Pozdrav!
Imam problem sa encode-om. Koristim:
* MySql(svaka tabela, kao i sama baza je podesena sa 'DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci;' - collate=utf8 takodje ne pomaze),
* Tomcat(konektore sam podesio na utf-8: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />; <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />),
* JSP(dodao sam fiter za Charset-ing:
Code:
package ba.codecentric.jug.core.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharsetFilter implements Filter {

    

    private String encoding;

    public void init(FilterConfig config) throws ServletException {
        encoding = config.getInitParameter("requestEncoding");

        if (encoding == null)
            encoding = "UTF-8";
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
            throws IOException, ServletException {
        // Respect the client-specified character encoding (see HTTP specification section 3.4.1)
        if (null == request.getCharacterEncoding())
            request.setCharacterEncoding(encoding);

        /**
         * Set the default response content type and encoding
         */
        response.setContentType("text/html; charset=UTF-8; collate=utf8_general_ci;");
        response.setCharacterEncoding("UTF-8");

        next.doFilter(request, response);
    }

    public void destroy() {
    }


i naravno, izmapirao ga unutar web.xml-a; Na svakoj stranici je prisutno:
Code:
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
i
Code:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

)

Problem koji mi se pojavljuje je sto imam š i ž pravilno prikazane, a umjesto đ, č i ć dobijam ?.

Ako neko ima ideju kako da ovo rijesim, bio bih mu zahvalan.

[Ovu poruku je menjao infob dana 16.07.2010. u 08:43 GMT+1]

[Ovu poruku je menjao infob dana 16.07.2010. u 09:49 GMT+1]
[ tarla @ 15.07.2010. 15:46 ] @
Pogledaj ovdje.

http://stackoverflow.com/quest...-utf-8-working-in-java-webapps

I ja sam imao sličnih problema.
[ infob @ 15.07.2010. 15:56 ] @
Da..., hvala za link! Bio sam na toj stranici i implementovao sve sto se trazi ali svejedno je problem sa navedena tri slova.

[Ovu poruku je menjao infob dana 16.07.2010. u 10:08 GMT+1]
[ tarla @ 16.07.2010. 08:36 ] @
Sa kojim enkodingom su snimljeni fajlovi ?

[ infob @ 16.07.2010. 08:41 ] @
Na bazi podatak sam na svaku tabelu implementovao: 'ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;', medjutim, problem koji imama i nije sa bazom podataka, ona je dobro setovana i unesene vrijednosti(nasa slova), pravilno dobijam ispisane kada 'manuelno' unesem vrijednosti u neko njeno polje, isto to i dobijam ispisano. Jedina stvar koja mi je cudna jeste da prilikom takvog unosa, karakteri se ptikazuju kao '|'(uspravne crte) ali bez obzira, ispis na aplikaciji je isti kao i unos, tj. postoje nasa slova.
Greska koja se pri ispisu pojavljuje je kada napravim neku akciju na aplikaciji i set karaktera "šđčćž", mi se konveruje u "š???ž".
Evo jednog primjera koda, pa ako neko ima ideju... :

Korisnik snima novost 'saveNews' akcijom:

Code:
<form id="newsForm" class="newsForm">
    <div>
        <ul>
            <li>
            <table>
                <tr>
                    <td class="key"><fmt:message key="view.text.createNews.title" /></td>
                </tr>
                <tr>
                    <td class="value"><input type="text" id="title" value="${selectedNews.title}" /></td>
                </tr>
            </table>
            </li>
            <li>
            <table>
                <tr>
                    <td class="key"><fmt:message key="view.text.createNews.text" /></td>
                </tr>
                <tr>
                    <td><textarea id="news_text">${selectedNews.text}</textarea></td>
                </tr>
            </table>
            </li>
            <input type="button" class="smallButton" value="<fmt:message key="view.text.save" />" onclick="saveNews(url,${selectedNews.id});">
        </ul>
    </div>
</form>


...ta akcija se obradi preko jQuery funkcije :
Code:
function saveNews(url, id) {
    var path = url + "/secure/SaveNewsAction";
    $.post(path, {
        'newsId' : id,
        'title' : $('#title').val(),
        'text' : $('#news_text').val()
    }, function(response, status, xhr) {
        if (response == "OK") {
            loadNews(url, 'MANAGE_NEWS');
            toggleNewsPanel();
        } else if (status == "success") {
            $('#modalPanelPlaceHolder').html(response);
            toggleNewsPanel();
        }
    });
}


...kontroler koji je zaduzen za ovu akciju je:
Code:
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        ConversationContext context = (ConversationContext) request.getSession().getAttribute("context");

        News news = null;

        try {

            int newsId = Integer.valueOf(request.getParameter("newsId"));

            news = new News.NewsBuilder()
                    .withId(newsId)
                    .withTitle(request.getParameter("title"))
                    .withText(request.getParameter("text"))
                    .asNews();

            if (newsService.saveNews(news)) {
                context.addActionMessage("action.news.save.success");
            } else {
                context.addErrorMessage("action.news.save.error");
            }
            PrintWriter writer = response.getWriter();
            writer.write("OK");
            writer.flush();
        } catch (NumberFormatException e) {
            context.addErrorMessage("action.news.save.error");
            PrintWriter writer = response.getWriter();
            writer.write("OK");
            writer.flush();
        } catch (EntityValidationException ve) {
            context.clearMessages();
            context.addErrorMessages(ve.getValidationMessages());
            RequestDispatcher dispatcher = request.getRequestDispatcher(Navigation.EDIT_NEWS.getLink());
            request.setAttribute("selectedNews", news);
            dispatcher.forward(request, response);
        }
    }

... ostale vezane stvari su navedene gore na pocetku(da sam kreirao Characterfilter, da u svakoj stranici postoje navedena dva taga za encoding i, naravno, baza podataka je setovana, sada na 'ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;', medjutim, mislim da nije do nje, jer kako sam naveo, unesene vrijednosti se na stranici prikazuju pravilno.)

Ima li neko savjet za ovaj problem? - Unaprijed se zahvaljujem!
[ dejanet @ 16.07.2010. 08:42 ] @
..mozda ti je problem u connection stringu za mysql..
[ infob @ 16.07.2010. 08:44 ] @
IDE je Eclipse, a citav workspace sam podesio da je na 'UTF-8'. Da li ima potrebe da svaki fajl zasebno snimam u odredjenom encoding-u?
[ infob @ 16.07.2010. 10:49 ] @
Tacno Dejane, url je bila nedostajuca "karika", tj. trebalo ga je azurirati, tako sto se doda sufix:
Code:
 '?useEncoding=true&amp;characterEncoding=UTF-8" ' 

Problem solved... :)

Hvala vam obojici na pomoci!
Pozdrav!
[ tomahawk84 @ 27.02.2013. 03:11 ] @
Pozdrav , svuda mi je podeseno u UTF-8 a imao sam isti problem pa iz citanja gore navedenog pogledam detaljnije i primetim da je mozda greska u index-u
jer jedino tamo nije stajalo UTF-8 , radi se o xml sajtu a u nastavku mozete videti sta sam promenio ali ne ide :/ , u koliko neko moze pomoci hvala unapred ,
inace radi se o istom problem o cemu je i pokrenuta tema...

PRE:
Code:
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>Naziv Sajta</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript" src="src/swfobject.js"></script>
        <script type="text/javascript" src="src/swfaddress.js"></script>
        <script type="text/javascript" src="src/swfmacmousewheel_src.js"></script>
    
        <script type="text/javascript">
        
        var vars = {};
        var params = { scale:'noScale', salign:'lt', menu:'false', allowfullscreen:'true'};
        var attributes = { id:'indexm', name:'indexm' }; // give an id to the flash object

        swfobject.embedSWF("index.swf", "flashContent", "100%", "100%", "9.0.0", "src/expressInstall.swf", vars, params, attributes );
        swfmacmousewheel.registerObject(attributes.id);
    
        </script>
        <style type="text/css">
        /*<![CDATA[*/
            html, body, #flashContent {
                height: 100%;
                overflow: hidden;
            }
            body {
                height: 100%;
                margin: auto;
                padding: 0;
                text-align:center;            
            }
        /*]]>*/
        </style>
    </head>
    <body bgColor="#000000">
        <div id="flashContent">
            <h3><font face="Arial" color="#990000">This website requires the use of Flash Player 9.0 at least. Please consider upgrading your flash player version in order to view this site.</font></h3>
            <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/sh...d_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
        </div>
    </body>
</html>


POSLE:

Code:
html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>Naziv Sajta</title>
        <meta http-equiv="Content-Type" content="text/html; encoding="UTF-8" />
        <script type="text/javascript" src="src/swfobject.js"></script>
        <script type="text/javascript" src="src/swfaddress.js"></script>
        <script type="text/javascript" src="src/swfmacmousewheel_src.js"></script>
    
        <script type="text/javascript">
        
        var vars = {};
        var params = { scale:'noScale', salign:'lt', menu:'false', allowfullscreen:'true'};
        var attributes = { id:'indexm', name:'indexm' }; // give an id to the flash object

        swfobject.embedSWF("index.swf", "flashContent", "100%", "100%", "9.0.0", "src/expressInstall.swf", vars, params, attributes );
        swfmacmousewheel.registerObject(attributes.id);
    
        </script>
        <style type="text/css">
        /*<![CDATA[*/
            html, body, #flashContent {
                height: 100%;
                overflow: hidden;
            }
            body {
                height: 100%;
                margin: auto;
                padding: 0;
                text-align:center;            
            }
        /*]]>*/
        </style>
    </head>
    <body bgColor="#000000">
        <div id="flashContent">
            <h3><font face="Arial" color="#990000">This website requires the use of Flash Player 9.0 at least. Please consider upgrading your flash player version in order to view this site.</font></h3>
            <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/sh...d_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
        </div>
    </body>
</html>