Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe / 12 сообщений из 12, страница 1 из 1
09.03.2011, 11:03
    #37154828
Stupid_BOT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Доброго всем здоровья и настроения.

SQLite офицальная сборка. Пробую выполнять в консоли:
Код: 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.
Microsoft Windows XP [Версия  5 . 1 . 2600 ]
(С) Корпорация Майкрософт,  1985 - 2001 .

D:\Downloads\Архивы\for_SQLite\sqlite-3_7_5>chcp  65001 
Текущая кодовая страница:  65001 

D:\Downloads\Архивы\for_SQLite\sqlite-3_7_5>sqlite3.exe c:\tmp\uni.dat
SQLite version  3 . 7 . 5 
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> pragma encoding;
UTF- 8 
sqlite> create table test(t text);
sqlite> insert into test values('Однажды'); -- на этой инструкции sqlite тихо умирает. Почему?

D:\Downloads\Архивы\for_SQLite\sqlite-3_7_5>sqlite3.exe c:\tmp\uni.dat
SQLite version  3 . 7 . 5 
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read c:\tmp\utf8in.txt        -- пробую заполнить таблицу из файла, сохраненного в utf-8
Error: cannot open "c:  mputf8in.txt" -- \t воспринимается как табуляция. Почему?
sqlite> .read c:/tmp/utf8in.txt        -- вторая попытка заполнить таблицу из файла. Удачная.
sqlite> select * from test;
Однажды
в студёную
зимнюю пору
Лошадка примёрзла
пипиской к забору
sqlite> select * from test where t like '%ё%'; -- запрос с кириллицей - sqlite тихо мрёт. Почему-то не удивляет, но по-прежнему настораживает

D:\Downloads\Архивы\for_SQLite\sqlite-3_7_5>sqlite3.exe c:\tmp\uni.dat
SQLite version  3 . 7 . 5 
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read c:/tmp/tmp_in.txt     -- запрос предидущего раздела, прочитанный из файла отрабатывает "на ура"... 
в студёную
Лошадка примёрзла
sqlite> .q

D:\Downloads\Архивы\for_SQLite\sqlite-3_7_5>chcp
Текущая кодовая страница:  65001 
utf8in.txt, tmp_in.txt
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
-- файл utf8in.txt (кодировка UTF-8)
drop table if exists test;

create table test(t text);

insert into test values('Однажды');
insert into test values('в студёную');
insert into test values('зимнюю пору');
insert into test values('Лошадка примёрзла');
insert into test values('пипиской к забору');


-- файл tmp_in.txt (кодировка UTF-8)
select * from test where t like '%ё%';

Подскажите, кто сколько может, как "вылечить" sqlite от подобного неподобающего поведения?

---------------------------------
Зри в корень! (с) Козьма Прутков
...
Рейтинг: 0 / 0
09.03.2011, 22:21
    #37156452
Alexbootch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Stupid_BOT, в свойствах CMD надо выбрать шрифт Lucida Console, если не поможет - ищи в гугле по фразе "sqlite chcp 65001
", т.к. эта проблема уже обсуждалась в рассылках
...
Рейтинг: 0 / 0
09.03.2011, 23:24
    #37156501
Stupid_BOT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Alexbootch,
спасибо за внимание. Без Люциды при cp=65001 вообще бы ничего кириллического в консоли не отобразилось.
...
Рейтинг: 0 / 0
09.03.2011, 23:45
    #37156514
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Stupid_BOT,

А разве если консоль оставить в 1251-ой и (при необходимости) первым запросом выполнить SET NAMES cp1251;, то будут проблемы с русским?
...
Рейтинг: 0 / 0
10.03.2011, 00:22
    #37156546
Stupid_BOT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Edd.Dragon,
не знаю. У меня пока проблемы с тем, ГДЕ выполнить SET NAMES. SqLite такой борьбы ругается:
Код: plaintext
Error: near "set": syntax error
...
Рейтинг: 0 / 0
10.03.2011, 00:35
    #37156552
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Ну да, все время путаю и приписываю SQLite-у "экслюзивные" возможности MySQL-я...

Собственно mysql.exe при смене кодировки консоли тоже падает (сталкивался ранее, пока не дошло, что для mysql это не нужно - набирай в какой хочешь, главное укажи это при помощи SET NAMES). Т.е. либо у sqllite.exe и mysql.exe одна и та же болячка, либо же лечить надо не их.
...
Рейтинг: 0 / 0
03.04.2011, 13:11
    #37196457
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Stupid_BOT==>sqlite> insert into test values('Однажды'); -- на этой инструкции sqlite тихо умирает. Почему?Потому, что консоль в винде такая. Вывод (в) utf-8 работат, ввод - нет.
...
Рейтинг: 0 / 0
03.04.2011, 20:03
    #37196843
Stupid_BOT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Basil A. Sidorov,
похоже на то, что не умеет правильно передавать строки в другие программы.
Пробовал поиск с помошью find.exe в небольших, по 15 строк, текстовых файлах (кодировка файлов ansi и utf8), - в обоих случаях окончания работы find так и не дождался.
Хотя со встроенными командами ввод UTF8 нормально работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

E:\TMP>chcp 65001
Текущая кодовая страница: 65001

E:\TMP>dir /a-d/b c:\temp\под*
подстановка_.txt
подстановка_38.xls
подстановка_пр.xls

E:\TMP>
...
Рейтинг: 0 / 0
05.04.2011, 19:07
    #37201056
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Stupid_BOTпохоже на то, что не умеет правильно передавать строки в другие программы.Не факт.
Единственное, что приходит в голову - запускать оболочку sqlite через "cmd/c/u всё остальное", но это из серии "Жаль. У меня ещё столько идей" :)
...
Рейтинг: 0 / 0
06.04.2011, 04:02
    #37201478
Stupid_BOT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
ОФФ:
Basil A. Sidorov,
попробуйте, хоть что-нибудь запустить командой
Код: plaintext
cmd /c/u "всё остальное"
будете несколько удивлены

ЗЫ: ключ /u дает ВЫВОД в юникод, отнюдь не ввод. "Юникод" для виндовой консоли это не utf-8, а скорее всего utf-16 (не уверен).
ЗЗЫ: пусть с ним, консоль в винде "кривая"/"глючная" (выбрать понравившееся). Но сильно не нравится, что sqlite "мрет" без хоть какого-то крика о помощи.
...
Рейтинг: 0 / 0
06.04.2011, 15:51
    #37202772
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
Stupid_BOTНо сильно не нравится, что sqlite "мрет" без хоть какого-то крика о помощи.sqlplus "мрёт" точно также.
Вот isql - не помню.
...
Рейтинг: 0 / 0
07.04.2011, 10:59
    #37204105
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
И mysql.exe тоже
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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