Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-10-13 09:10:47

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Mysql i kodowanie polskich znaków

Witam! Mam taki problem odnośnie kodowania polskich znaków w bazie mysql
Mianowicie zamiast polskich znaków mam - ?
Tylko pytajniki - żadnych innych dziwnych znaczków!

Sprawa wygląda tak że skrypt tworzący bazę to osobny plik i skrypt dodający rekordy jest w osobnym pliku ( jest to napisane w javie
ale wiadomo SQL to SQL )
Skrypty piszę w notepad++ i używam tam kodowania UTF-8.
W pliku który dodaje rekordy do bazy dołożyłem ich wyswietlanie i na ekran przeglądarki wyrzuca mi dane z polskimi znaczkami ( jest ok )
a do bazy z tych samych zmiennych dodają mi się rekordy z tymi pytajnikami )

Kod tworzenia bazy wygląda tak:

Kod:

try{
Class.forName("com.mysql.jdbc.Driver");
}catch (Exception e){
System.out.println("Błąd wczytywania sterowników");
return;
}



String URL = "jdbc:mysql://192.168.2.181:3306/baza";
String username ="user";
String password="pass";
Statement s=null;
Connection con=null;
try{
con=DriverManager.getConnection(URL,username,password);
s=con.createStatement();
System.out.println("Polaczenie OK - "+URL);
}catch (Exception e) {
System.err.println("Błąd połączenia z "+URL);
}

 String[] SQL = {
"DROP TABLE tabelka ", 
"CREATE TABLE tabelka ("+
"id integer NOT NULL AUTO_INCREMENT PRIMARY KEY,"+
"data varchar (32),"+
"nr varchar (128),"+
"rek1 varchar (256),"+
"rek2 varchar (256),"+
"rek3 varchar (36)) CHARACTER SET utf8 COLLATE utf8_general_ci",

};

try {
for (int i=0; i<SQL.length; i++) {
s.executeUpdate(SQL[i]);
}
con.close();
} catch (Exception e) {
System.err.println("Wystapil problem z wyslaniem SQL do "+URL+
": "+e.getMessage());
}

Jak widać baza wraz z tabelami tworzy się w kodowaniu utf8_general_ci
W phpmyadmin także widzę poprawne utworzenie się bazy i tabeli w tym kodowaniu.

A skrypt dodawania:

Kod:

try{
Class.forName("com.mysql.jdbc.Driver");
}catch (Exception e){
System.out.println("Błąd wczytywania sterowników");
return;
}



String URL = "jdbc:mysql://192.168.2.181:3306/baza";
String username ="user";
String password="pass";
Statement s=null;
Connection con=null;
try{
con=DriverManager.getConnection(URL,username,password);
s=con.createStatement();
System.out.println("Polaczenie OK - "+URL);
}catch (Exception e) {
System.err.println("Błąd połączenia z "+URL);
}

 String[] SQL = {
"INSERT INTO tabelka VALUES (id, '"+wartosc123[0]+"', '"+string2[0]+"', '"+text1+"' , '"+text2+"', '"+nf.format(opcja3)+"')",
};
try {
for (int i=0; i<SQL.length; i++) {
s.executeUpdate(SQL[i]);
}
con.close();
} catch (Exception e) {
System.err.println("Wystapil problem z wyslaniem SQL do "+URL+
": "+e.getMessage());
}

Dla przypomnienia dane które dodają się w insercie (wartosc123[0] itd ) przy wyświetleniu za pomocą out.print'a
wyświetlają się prawidłowo!

Ma ktoś może jakiś ciekawy pomysł??


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#2  2010-10-13 09:52:45

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: Mysql i kodowanie polskich znaków

kodowanie bazy masz w UTF-8 ?

może przed insertem daj :  SET NAMES 'utf8';

Offline

 

#3  2010-10-13 10:06:40

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: Mysql i kodowanie polskich znaków

Tak dokładnie - utf8_general_ci

mam SET NAMES 'utf8'

s.execute("set names 'utf8'");

pod

s=con.createStatement();

Ale dalej to samo!


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)