Я надеюсь кодировать и хранить Unicode в базе данных Sqlite. Есть ли любой путь к сырым данным, кодируют UTF-8 (unicode) строковый литерал в запросе SQL.
Я ищу что-то подобное Java, куда я могу бросить \u00E9 в строку и иметь его автоволшебно upconvert к Unicode.
Какой язык вы используете? 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
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))
Если вы настроили свою базу данных для использования UTF-8 (я считаю, что это значение по умолчанию для многих установок; выполните PRAGMA encoding = "UTF-8";
во время создания схемы чтобы быть уверенным), это не должно быть проблемой.
Если вы отправите SQLite3 набор символов в кодировке UTF-8, у него не должно возникнуть проблем с его обработкой.
Если в Java есть возможность «перебросить \ u0039 в строку», я бы просто использовал это и удостоверился, что при попытке поместить строку в базу данных у вас есть преобразование строки в байтовую кодировку UTF-8 с использованием любого механизма, предоставляемого Java. Я не верю, что SQLite предоставляет или должен предоставлять вам это.