Как я заключаю Строковый литерал UTF-8 в кавычки в Sqlite3

Я надеюсь кодировать и хранить Unicode в базе данных Sqlite. Есть ли любой путь к сырым данным, кодируют UTF-8 (unicode) строковый литерал в запросе SQL.

Я ищу что-то подобное Java, куда я могу бросить \u00E9 в строку и иметь его автоволшебно upconvert к Unicode.

6
задан Sean Madden 9 August 2010 в 21:23
поделиться

3 ответа

Какой язык вы используете? SQLite прекрасно справляется с Unicode, создание литералов на языке хостинга менее очевидно.

$ sqlite3 junk.sqlite
SQLite version 3.6.22
sqlite> create table names (id integer primary key, name string);
sqlite> insert into names values (null, 
    'î℉ yõù g                  
9
ответ дан 8 December 2019 в 14:38
поделиться

SQLite не имеет экранирующих последовательностей. Но в вашем языке программирования, вероятно, есть.

# in Python
db.execute("INSERT INTO MyTable(MyColumn) VALUES('\u00E9')")

или

db.execute("INSERT INTO MyTable(MyColumn) VALUES(?)", ['\u00E9'])

Если по какой-то причине вам нужно написать литерал UTF-8 в чистом SQL, вы можете сделать что-то вроде:

sqlite> SELECT CAST(X'C3A9' AS TEXT);
é

Edit: С момента написания этого ответа в SQLite была добавлена функция CHAR. Так что теперь вы можете написать

INSERT INTO MyTable(MyColumn) VALUES(CHAR(233))
6
ответ дан 8 December 2019 в 14:38
поделиться

Если вы настроили свою базу данных для использования UTF-8 (я считаю, что это значение по умолчанию для многих установок; выполните PRAGMA encoding = "UTF-8"; во время создания схемы чтобы быть уверенным), это не должно быть проблемой.

Если вы отправите SQLite3 набор символов в кодировке UTF-8, у него не должно возникнуть проблем с его обработкой.

Если в Java есть возможность «перебросить \ u0039 в строку», я бы просто использовал это и удостоверился, что при попытке поместить строку в базу данных у вас есть преобразование строки в байтовую кодировку UTF-8 с использованием любого механизма, предоставляемого Java. Я не верю, что SQLite предоставляет или должен предоставлять вам это.

0
ответ дан 8 December 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: