2010-03-18 7 views
3

Je suis assez perplexe avec CouchDB: si j'envoie une requête PUT avec des champs de chaînes JSON encodés en UTF-8, les caractères ASCII non 7 bits sont convertis en séquence d'échappement "\ uXXXX". Y at-il un moyen de lui dire de ne pas échapper à UNICODE?Comment CouchDB gère-t-il UTF-8?

Répondre

5

Ces \uXXXX sont la façon correcte de coder les caractères UTF-8 en Javascript. Considérant que CouchDB est accédé en utilisant JSON (données Javascript), ces séquences doivent être interprétées lors de l'utilisation des données, et cela ne devrait pas poser de problème.

+0

Je suis également confronté à un problème lors de la récupération des caractères DBCS stockés dans le compartiment CouchDB. Quelqu'un peut-il aider avec cela? – Jaynil

0

CouchDB utilise mochiweb pour gérer le codage/décodage JSON.

Il existe un argument de routine de codage qui indique à la sortie \uXXXX.

Une façon simple d'appliquer le correctif est:

  1. obtenir CouchDB la source
  2. modifier src/mochiweb/mochijson2.erl
  3. Trouver -record(encoder, {handler=null, utf8=false}). autour de la ligne 45.
  4. Modification utf8=true
  5. faire nettoyer; faire; make install

J'ai trouvé la discussion avec Chris Anderson http://erlangine.feautec.pp.ru/?p=232 et il me dit qu'il ya une chance d'obtenir ce comportement hors de la boîte, si les soins de quelqu'un pour faire patch adapté à CouchDB.