7
votes

Comment citer un littéral de chaîne UTF-8 dans SQLite3

Je cherche à encoder et à stocker Unicode dans une base de données SQLite. Y a-t-il un moyen d'encoder un littéral de chaîne UTF-8 (Unicode) dans une requête SQL.

Je cherche quelque chose de similaire à Java où je peux jeter un \ u00e9 dans une corde et l'avoir automatiquement upconverver à UNICODE.


1 commentaires

Parlez-vous de le faire dans une application personnalisée en Java ou de l'interprète de commandement SQLite?


4 Réponses :


0
votes

Si vous configurez votre base de données pour utiliser UTF-8 (je pense que c'est la valeur par défaut pour de nombreuses installations; faire pragma coding = "utf-8"; au temps de création de schéma pour être certain), cette ne devrait pas être un problème.

Si vous envoyez SQLITE3 un ensemble de caractères codé dans UTF-8, il ne devrait pas avoir de problème de résoudre ce problème.

Si Java a la possibilité de vous permettre de "lancer un \ u0039 dans une chaîne", je l'utiliserais et assurez-vous que lorsque vous essayez de placer la chaîne dans la base de données, la chaîne convertit- Un codage d'octets UTF-8 utilisant tout mécanisme Java fournit. Je ne crois pas que SQLite fournit ou doit fournir ceci pour vous.


1 commentaires

Pourquoi voudriez-vous "lancer un \ u0039 dans une chaîne"? Semble que ce serait beaucoup plus facile d'écrire "9".



9
votes

Quelle langue utilisez-vous? SQLite poignée Unicode bien, créant les littéraux de votre langue d'hébergement est moins évident.

$ 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𐌹ѷЄ ΣϘГくטƏ UTF-8, it stores it');
sqlite> select * from names;
1|î℉ yõù g𐌹ѷЄ ΣϘГくטƏ UTF-8, it stores it


0 commentaires

6
votes

SQLite n'a pas de séquences d'échappement. Mais votre langage de programmation fait probablement. XXX PRE>

ou P>

INSERT INTO MyTable(MyColumn) VALUES(CHAR(233))


0 commentaires

1
votes

Si votre problème est la réinterprétation des séquences d'échappement dans SQLite, vous pouvez (AB) Utiliser JSON_Extract EG.

    UPDATE  `tableToFix`  SET  `columnToFix` = json_extract('"'  ||  `columnToFix`  ||  '"', '$');
    INSERT INTO test VALUE (json_extract('"P\u0159\u00edli\u0161 \u017elu\u0165ou\u010dk\u00fd k\u016f\u0148 \u00fap\u011bl \u010f\u00e1belsk\u00e9 \u00f3dy."', '$'));


0 commentaires