Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как решить проблему с кириллицей в FireBird? / 2 сообщений из 2, страница 1 из 1
11.03.2017, 23:57
    #39417471
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решить проблему с кириллицей в FireBird?
Здравствуйте.

создал БД и таблицу FireBird 3 с полем в кириллице

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> CREATE DATABASE 'D:\databases\Firebird\data\example.fdb' USER 'SYS' PASSWORD 'пароль' DEFAULT CHARACTER SET WIN1251;
SQL> create table customers(id int not null,name varchar(50));
SQL> insert into customers values (1,'first');
SQL> insert into customers values (2,'второй');
SQL> commit;
SQL> select * from customers;

          ID NAME
============ ==================================================
           1 first
           2 второй



Написал клиент на Java с encoding WIN1251 результата

Код: java
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.
Properties props = new Properties();
        props.setProperty("user", "sys");
        props.setProperty("password", "пароль");
        props.setProperty("encoding", "WIN1251");
        String connection_string=connection_string="jdbc:firebirdsql:192.168.10.41/3050:D:\\databases\\Firebird\\data\\example.fdb";
        boolean st = false;
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String Connection_Status = "";
        String value;
        Integer count_values;

        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            Connection connection = DriverManager.getConnection(connection_string, props);
            connection.close();
            Connection_Status = "Подключение к БД " + connection_string + " прошло успешно.";

            try {

                //loading drivers for mysql
                Class.forName("org.firebirdsql.jdbc.FBDriver");

                //creating connection with the database
                con = DriverManager.getConnection
                        (connection_string, props);
                ps = con.prepareStatement
                        (Text_Script);
                //ps.setString(1, uname);
                //ps.setString(2, pass);
                rs = ps.executeQuery();
                //st = rs.next();
                value = "";
                count_values = 0;
                // iterate through the java resultset
                while (rs.next()) {
                    count_values = count_values + 1;
                    value = value + rs.getString("ID") + "; ";
                    value = value + rs.getString("name") +"; ";
}



но в результате получаю абракадабру вместо кириллицы
Код: xml
1.
1; first; 2; ўв®а®©;



Как решить эту проблему?
...
Рейтинг: 0 / 0
12.03.2017, 06:33
    #39417516
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решить проблему с кириллицей в FireBird?
drno,

по-молчанию сеанс cmd имеет кодировку 866.
если мы создали БД с 1251 и делаем insert в cmd, то перед подключением к БД необходимо переключить кодовую страницу на 1251

Код: xml
1.
2.
3.
4.
c:\Server\Apache\bin>chcp
Текущая кодовая страница: 866
c:\Server\Apache\bin>chcp 1251
Текущая кодовая страница: 1251




и только потом подключать к БД и выполнять insert

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select * from customers;

          ID NAME
============ ==================================================
           1 first
           2 ўв®а®©
           4 зҐвўҐавл©
           5 пятый
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как решить проблему с кириллицей в FireBird? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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