Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при работе с MySQL. / 11 сообщений из 11, страница 1 из 1
17.03.2005, 08:14
    #32964837
Павел_Д
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
Всем доброго времени суток.
Вот уже 2 дня не могу справиться с этой проблемой:

Соединяюсь с MySQL, затем делаю select, пытаюсь вытащить строчку с русским именем, на выходе каракули.

Работаю под win2000.
Все кодировки в MySQL настроены на Cp1251.
При коннекте "characterEncoding" и "characterSetResults" тоже ставлю Cp1251.
Статью Астахова читал ).

Вот пример кода:


code:--------------------------------------------------------------------------------
import java.io.*;
import java.util.*;
import java.sql.*;
public class test
{
public static void main(String[] args)
{
try
{
Class.forName("com.mysql.jdbc.Driver");
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
System.exit(1);
}
/*
Establishing connection
*/
String url = "jdbc:mysql://localhost/interbank";
Connection con=null;
Properties connInfo = new Properties();
connInfo.put("user","root");
connInfo.put("password","pass");
connInfo.put("useUnicode","true");
connInfo.put("characterEncoding","Cp1251");
connInfo.put("characterSetResults","Cp1251");
try
{
con = DriverManager.getConnection(url,connInfo);
}catch (Exception e )
{
System.out.println("DB connection error:");
e.printStackTrace();
}
Statement stmt=null;
try{
stmt= con.createStatement();;
}catch(Exception e){System.out.println("Connection error");}
try{
String query = "SELECT * FROM banks where bankseek='123456785'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
{
String str = rs.getString("name");
FileOutputStream fo = new FileOutputStream(".\\test");
//byte[] winData = str.getBytes("UTF-8");
byte[] winData = str.getBytes("Cp1251");
/*
Асли писать строку через FileWriter - результат тот же ((
*/
fo.write(winData);
fo.close();
}
}catch(SQLException ex)
{
System.out.println("SQLException caught");
while (ex != null)
{
System.out.println("Message: "+ ex.getMessage());
System.out.println("SQLState: "+ ex.getSQLState());
System.out.println("ErrorCode: "+ ex.getErrorCode());
ex = ex.getNextException();
System.out.println("");
}
}catch (Exception e ){e.printStackTrace();}
}
}
--------------------------------------------------------------------------------


P.S. Самое интересное в том, что некоторые буквы отображаются нормально.
Базу я создавал через стандартный MySQL CommandLine Client.
Буду очень благодарен за помощь.
// **************************************************
*****************
Вот пришел домой.

Теперь после INSERT`а через MySQL CommandLine Client русские буквы не сохраняются должным образом (о чём свидетельствуют каракули в том же MySQL CommandLine Client), зато если писать в таблицу из программы, а потом из нее же читать всё работает нормально. Кроме того всякие GUI клиенты тоже отображают русские буквы адекватно (и это меня вполне устраивает).
Разница лишь в том, что на работе стоит win2k_ENG, а дома winXP_RUS.
И нужно чтобы работало это на работе...
Может у кого-нибудь есть мысли как решить эту проблему?
Варианты типа "Поставь на работу XP" не предлагать. ))
...
Рейтинг: 0 / 0
17.03.2005, 08:44
    #32964866
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
Ты этот код где запускаешь? в cmd?
...
Рейтинг: 0 / 0
17.03.2005, 08:49
    #32964870
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
 import  java.io.*;
 import  java.util.*;
 import  java.sql.*;
 public   class  test
{
 public   static   void  main(String[] args) {
    try  {
       Class .forName("com.mysql.jdbc.Driver");
   }  catch (java.lang.ClassNotFoundException e) {
      System.err.print("ClassNotFoundException: ");
      System.err.println(e.getMessage());
      System.exit( 1 );
   }

   /*
   Establishing connection
   */
   String url = "jdbc:mysql://localhost/interbank";
   Connection con= null ;
   Properties connInfo =  new  Properties();
   connInfo.put("user","root");
   connInfo.put("password","pass");
   connInfo.put("useUnicode","true");
   connInfo.put("characterEncoding","Cp1251");
   connInfo.put("characterSetResults","Cp1251");
    try  {
      con = DriverManager.getConnection(url,connInfo);
   }  catch  (Exception e ) {
      System.out.println("DB connection error:");
      e.printStackTrace();
   }
   Statement stmt= null ;
    try  {
      stmt= con.createStatement();;
   }  catch (Exception e) {
      System.out.println("Connection error");
   }
    try  {
      String query = "SELECT * FROM banks where bankseek='123456785'";
      ResultSet rs = stmt.executeQuery(query);
       while  (rs.next()) {
         String str = rs.getString("name");
         FileOutputStream fo =  new  FileOutputStream(".\\test");
         //byte[] winData = str.getBytes("UTF-8");
          byte [] winData = str.getBytes("Cp1251");
         /*
         Асли писать строку через FileWriter - результат тот же ((
         */
         fo.write(winData);
         fo.close();
      }
   }  catch (SQLException ex) {
      System.out.println("SQLException caught");
       while  (ex !=  null ) {
         System.out.println("Message: "+ ex.getMessage());
         System.out.println("SQLState: "+ ex.getSQLState());
         System.out.println("ErrorCode: "+ ex.getErrorCode());
         ex = ex.getNextException();
         System.out.println("");
   }
}  catch  (Exception e ) {
   e.printStackTrace();
}
}
}
Так хоть прочитать можно...
...
Рейтинг: 0 / 0
17.03.2005, 11:11
    #32965270
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
нужно чтобы все таблицы в базе были в кодировке UTF-8, это как минимум.
Вот здесь человек с такой же проблемой сталкивался.
...
Рейтинг: 0 / 0
17.03.2005, 11:11
    #32965272
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
нужно чтобы все таблицы в базе были в кодировке UTF-8, это как минимум.
Вот здесь человек с такой же проблемой сталкивался.
...
Рейтинг: 0 / 0
17.03.2005, 11:28
    #32965346
asdasdasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
wessenнужно чтобы все таблицы в базе были в кодировке UTF-8, это как минимум.
Вот здесь человек с такой же проблемой сталкивался.а у тебя чего за провайдер? есть маза, что мы с тобой в одной сетке сидим :)
...
Рейтинг: 0 / 0
17.03.2005, 11:42
    #32965401
Павел_Д
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
Всем спасибо,
разобрался:
проблема заключалачь в том, что таблица была создана с использованием кодировки latin1, а дома я создавал таблицу с уже измененной кодировкой Cp1251.
...
Рейтинг: 0 / 0
17.03.2005, 11:43
    #32965402
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
asdasdasa wessenнужно чтобы все таблицы в базе были в кодировке UTF-8, это как минимум.
Вот здесь человек с такой же проблемой сталкивался.а у тебя чего за провайдер? есть маза, что мы с тобой в одной сетке сидим :)
А ты вообще кто есть? И что за маза такая? :)
...
Рейтинг: 0 / 0
17.03.2005, 11:50
    #32965433
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
оффтоп
а как провайдера узнать? ипользую traceroute, а он только внутренние маршрутизаторы показывает, а админу звонить не хочется:)
...
Рейтинг: 0 / 0
17.03.2005, 17:38
    #32966582
пробел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
wessen asdasdasa wessenнужно чтобы все таблицы в базе были в кодировке UTF-8, это как минимум.
Вот здесь человек с такой же проблемой сталкивался.а у тебя чего за провайдер? есть маза, что мы с тобой в одной сетке сидим :)
А ты вообще кто есть? И что за маза такая? :)вообще, я местный :)

и если глянуть на статистику http://www.sql.ru/users/cat2/statistics.asp то по критериям "форум java" и "самые активные авторы" я занимаю почетное первое место :) а если учесть в том же списке еще двух моих клонов, то вообще - с большим отрывом от НеГониНаНас'а :)
...
Рейтинг: 0 / 0
17.03.2005, 17:52
    #32966632
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при работе с MySQL.
да ты ваще крут, базар нет :) И я еще с тобой в одной сетке (наверное), вот мне повезло то :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при работе с MySQL. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]