Comment définir le codage des caractères dans un fichier yaml
Nous travaillons avec le simple backend pour les nouveaux Rails 2.2 système i18n, et je voulais savoir la bonne syntaxe pour définir l'encodage dans un fichier yaml.
En d'autres termes quel est le format yaml pour ce xml:
Vous ne peut pas définir l'encodage en YAML. Mais il y a aussi pas besoin, étant donné que le codage est fait au niveau du fichier et est transparent pour le YAML et de son analyse. Lors de l'écriture d'un YAML document, c'est tout ce que vous devez retenir.
Tous les personnages [...] sont des points de code Unicode. Chaque point de code est
écrit comme un ou plusieurs octets en fonction de l'encodage des caractères
utilisé. Notez qu'en UTF-16, les caractères ci-dessus #xFFFF sont composées de quatre
octets, à l'aide d'une paire de substitution. Un YAML processeur doit prendre en charge la
UTF-16 et UTF-8 encodages de caractères. Si un flux de caractères n'est pas
commencer avec une marque d'ordre d'octet (#FEFF), l'encodage des caractères doit être
UTF-8. Sinon, il doit être en UTF-8, UTF-16 LE ou UTF-16 ÊTRE aussi
indiqué par la marque d'ordre des octets. Sur la sortie, il est recommandé qu'un
marque d'ordre d'octet ne doit être émis pour l'UTF-16 encodages de caractères.
Notez que l'UTF-32 codage est pas explicitement pris en charge.
ceci est très similaire à JSON, pour ce que ça vaut le coup (bien que JSON permet également UTF-32, doute que quelqu'un l'utilise) En fait, selon le JSON RFC, tout format Unicode avec une NOMENCLATURE est acceptable, et UTF-8 sans BOM. Je suis surpris, cependant, que le JSON et YAML spécifications de le mentionner, car c'est complètement hors de propos. Le YAML 1.1 spec (qui vous lien) dit que l'UTF-8 est implicite si il n'y a pas de MOB, et que BOM devrait être sortie uniquement sur UTF-16 docs. Si la présence d'une NOMENCLATURE, et la NOMENCLATURE, si elle existe, sont les seuls moyens de définir l'encodage. Cette réponse doit être mis à jour par eksortso commentaire. Citant le document lié: "Si un flux de caractères ne commence pas avec une marque d'ordre d'octet (#FEFF), l'encodage est UTF-8. Sinon, il doit être en UTF-8, UTF-16 LE ou UTF-16, comme indiqué par la marque d'ordre d'octet." Fait.
Vous ne peut pas définir l'encodage en YAML. Mais il y a aussi pas besoin, étant donné que le codage est fait au niveau du fichier et est transparent pour le YAML et de son analyse. Lors de l'écriture d'un YAML document, c'est tout ce que vous devez retenir.
Sur le niveau du fichier YAML supporte l'UTF-8 et UTF-16, mais pas en UTF-32. Le tous les détails de la spécification actuelle est que
En fait, selon le JSON RFC, tout format Unicode avec une NOMENCLATURE est acceptable, et UTF-8 sans BOM. Je suis surpris, cependant, que le JSON et YAML spécifications de le mentionner, car c'est complètement hors de propos.
Le YAML 1.1 spec (qui vous lien) dit que l'UTF-8 est implicite si il n'y a pas de MOB, et que BOM devrait être sortie uniquement sur UTF-16 docs. Si la présence d'une NOMENCLATURE, et la NOMENCLATURE, si elle existe, sont les seuls moyens de définir l'encodage.
Cette réponse doit être mis à jour par eksortso commentaire. Citant le document lié: "Si un flux de caractères ne commence pas avec une marque d'ordre d'octet (#FEFF), l'encodage est UTF-8. Sinon, il doit être en UTF-8, UTF-16 LE ou UTF-16, comme indiqué par la marque d'ordre d'octet."
Fait.
OriginalL'auteur bzlm