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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.


Użytkownik



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:
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:
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ł??
Offline


Stary wyjadacz :P



kodowanie bazy masz w UTF-8 ?
może przed insertem daj : SET NAMES 'utf8';
Offline


Użytkownik



Tak dokładnie - utf8_general_ci
mam SET NAMES 'utf8'
s.execute("set names 'utf8'");
pod
s=con.createStatement();
Ale dalej to samo!
Offline