2017-05-05 4 views
9

Ich bin in der Datei Codierung der Hölle mit Puppe. selbst die einfachsten Versuch nicht funktioniert:Codierung Hölle mit Puppe

hiera-data/test.yaml: 
--- 
test: Äñö 

init.pp: 
    $test = hiera('test') 
    file { "/root/encoding.txt": 
    ensure => file, 
    content => $test 
    } 

auf dem Puppen Server alles sieht gut aus:

puppet:~ # file -i /etc/puppetlabs/puppet/hiera-data/env/test.yaml 
/etc/puppetlabs/puppet/hiera-data/env/test.yaml: text/plain charset=utf-8 
puppet:~ # cat /etc/puppetlabs/puppet/hiera-data/env/test.yaml 
--- 
test: Äñö 
puppet:~ # locale 
LANG=POSIX 
LC_CTYPE=en_US.UTF-8 

auf dem Puppenmittel:

puppet-test:~ # locale 
LANG=POSIX 
LC_CTYPE=en_US.UTF-8 

nach dem Laufen:

puppet-test:~ # file -i encoding.txt 
encoding.txt: text/plain charset=utf-8 

aber:

cat encoding.txt

aktualisieren: hier werden die HEX-Daten in den Kommentaren von John gefragt (sehen Sie es mit vi :%!xxd):

0000000: efbf bdef bfbd efbf bdef bfbd efbf bdef ................ 
0000010: bfbd 0a         ... 

aktualisieren: wie in den Kommentaren gestellt von Peter, der hiera direkt leitet, gibt keinen weiteren Einblick. Speziell kann ich es nur auf dem Server versuchen, da der Agent die Quellen nicht hat. enter image description here

meine Umgebung ist ziemlich veraltet, aber ich bin keine neuere Version (zumindest noch nicht ohne guten Grund) zu nutzen:

  • SuSE Enterprise Linux 11 Service Pack 3
  • Puppet Enterprise-3.8.6
  • pe-Rubin-1.9.3.551-9.pe.sles11

i keine Einsicht für dieses Problem zu schätzen wissen!

vielen Dank im Voraus

+5

Sind Sie sicher, dass das Problem nicht Ihr Terminal ist? Öffnen Sie 'encoding.txt' in einem Hex-Editor (oder in einem Texteditor mit einem Binär-/Hex-Modus) und prüfen Sie, ob die Datei die richtigen Bytes enthält. Insbesondere würde die UTF-8-Codierung für die Zeichenfolge, die Sie präsentieren, aus diesen sechs Bytes bestehen: "c3 84 c3 b1 c3 b6". Wenn es etwas anderes enthält, dann füge das bitte zu deiner Frage hinzu. –

+0

Ich habe die Frage mit den fehlenden Infos aktualisiert, Danke @JohnBollinger – mmoossen

+0

Nach einem zweiten Blick darauf scheint dies kein Marionettenproblem zu sein. Dies scheint ein System-env-Problem zu sein. –

Antwort

0

Mit LANG = POSIX definitiv Dinge verrückt machen kann. LANG bestimmt die Kodierung, die die Konsole anzeigt. In der Regel ist es wünschenswert, dass LANG und LC_TYPE übereinstimmen.

See: Explain the effects of export LANG, LC_CTYPE, LC_ALL

Für weitere Informationen über LANG = POSIX siehe http://pubs.opengroup.org/onlinepubs/7908799/xbd/locale.html#tag_005_002

Auch auf einer nicht verwandte Notiz, Puppet 3.8 hat definitiv Defekte um richtig angezeigt und/oder Unicode-Zeichen persistierenden. In den neueren Puppet-Builds wurde viel Arbeit geleistet, um Puppet vollständig zu internationalisieren (und zu lokalisieren).

+0

Hi @Sam, tut mir leid, aber deine Antwort, noch die Links, gib mir irgendeinen Kleber, was ich als nächstes versuchen soll ... irgendwie bekomme ich die gleichen Ergebnisse auf einem Knoten mit 'LANG = de_DE.UTF-8'. Aber trotzdem vielen Dank für die Beantwortung ... – mmoossen