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

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
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37156452
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOT, в свойствах CMD надо выбрать шрифт Lucida Console, если не поможет - ищи в гугле по фразе "sqlite chcp 65001
", т.к. эта проблема уже обсуждалась в рассылках
...
Рейтинг: 0 / 0
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37156501
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexbootch,
спасибо за внимание. Без Люциды при cp=65001 вообще бы ничего кириллического в консоли не отобразилось.
...
Рейтинг: 0 / 0
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37156514
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOT,

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

Собственно mysql.exe при смене кодировки консоли тоже падает (сталкивался ранее, пока не дошло, что для mysql это не нужно - набирай в какой хочешь, главное укажи это при помощи SET NAMES). Т.е. либо у sqllite.exe и mysql.exe одна и та же болячка, либо же лечить надо не их.
...
Рейтинг: 0 / 0
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37196457
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOT==>sqlite> insert into test values('Однажды'); -- на этой инструкции sqlite тихо умирает. Почему?Потому, что консоль в винде такая. Вывод (в) utf-8 работат, ввод - нет.
...
Рейтинг: 0 / 0
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37196843
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37201056
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOTпохоже на то, что не умеет правильно передавать строки в другие программы.Не факт.
Единственное, что приходит в голову - запускать оболочку sqlite через "cmd/c/u всё остальное", но это из серии "Жаль. У меня ещё столько идей" :)
...
Рейтинг: 0 / 0
Windows консоль + кодовая страница 65001 + кириллица в запросе = "вылет" sqlite3.exe
    #37201478
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОФФ:
Basil A. Sidorov,
попробуйте, хоть что-нибудь запустить командой
Код: plaintext
cmd /c/u "всё остальное"
будете несколько удивлены

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


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