Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > JSP-MYSQL Türkçe Karakter Problemi
Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
19.09.2006-21:30 #10095
Mrb;
MY-SQL control center ile olusturup doldurduğum tablolarımdaki türkçe karakterleri JSP ile cekmeye caliştigimda sorun çıkmakta.

JSP sayfamın page yönergesi bu marka

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

meta tag ise

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> bu marka

Araştırmalarım sonucu JSP sayfasından servera sorgu yollamadan önce aşşağıdaki sorguları çalıştırırsam sorunun çözülecegi gibi sonuclar cıktı fakat bu da işe yaramadı

conn.createStatement().execute("SET collation_connection=utf8_turkish_ci");
conn.createStatement().execute("SET collation_database=utf8_turkish_ci");
conn.createStatement().execute("SET collation_server=utf8_turkish_ci");


ayrıca veritabanımı ve tablolarımı da

DEFAULT CHARACTER SET utf8 COLLATE utf8_turkish_ci satırı ile yaratmaktayım ama bi türlü işin içinden çıkamadım..
MYSQL 4.1 ve Tomcat 5.0 ile çalışıyorum.





@yelloware












Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
19.09.2006-21:33 #10096
http://iucoders.com/frm_show_topic.jsp?tid=940





N/A
Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
19.09.2006-21:40 #10098
olmadı orhan aynı marka jstl tagi yetismedi imdadima.





@yelloware












Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
19.09.2006-21:49 #10099
 
String a=new String(b.getBytes("ISO-8859-1"),"UTF-8");

bu nu yiyormu?





N/A
Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
19.09.2006-22:00 #10100
bu dedigini deneyince dahada sapitti türkçe karakterler
tablomu bu marka olusturuorm

CREATE TABLE `news3` (
`ID` int(11) NOT NULL auto_increment,
`Baslik` varchar(100) character set utf8 collate utf8_turkish_ci default NULL,
`Detay` text character set utf8 collate utf8_turkish_ci,
`Tarih` timestamp NULL default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5






@yelloware












Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
19.09.2006-23:40 #10103
aynı sorunla bende karşılaştım. ben encoding olarak ISO-8859-9 kullanıyorum.
Tomcat'te varsayılan encoding ISO-8859-1 problem veriyi gosterirken kaynaklanıyor.

Bende benzer bir problem ile uğraşıyorum onu halledince çözümü yazarım.

http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/





N/A
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
24.09.2006-13:50 #10179
valla problemi şu şekilde çözülüyor.
kodu olduğu gibi koyuyorum.
bu web filter
package com.eksera.service;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class CharacterEncodingFilter implements Filter {
    private Logger logger = Logger.getLogger(CharacterEncodingFilter.class.getName());
    public static final String REQUEST_CHARACTER_ENCODING = "characterEncoding";
    private String encoding = null;
    public void init(FilterConfig filterConfig) throws ServletException {
        encoding = filterConfig.getInitParameter(REQUEST_CHARACTER_ENCODING);
        if (logger.isDebugEnabled()) logger.debug("encoding=" + encoding);
    }
    private String getInitParameter(FilterConfig filterConfig, String parameterName) throws ServletException {
        String value = filterConfig.getInitParameter(parameterName);
        if (StringUtils.isEmpty(value)) {
            throw new ServletException(getClass().getName() + ": " + parameterName + " is required");
        }        
        return value;
    }
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException
    {        
        request.setCharacterEncoding(encoding);        
        chain.doFilter(request, response);
    }
    public void destroy() { }
}

web.xml de <web-app> altına
<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>com.eksera.service.CharacterEncodingFilter</filter-class>
	<init-param>
      <param-name>characterEncoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/servlet/*</url-pattern>
	</filter-mapping>


sayfaların page decleration kısmı şöyle olmalı
 

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

browser için <head></head> taglarının arasına ise
 

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

connection url şöyle olmalı
 
jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=UTF-8






N/A
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb