2017-05-05 80 views
9

Jestem w pliku kodującym piekło z lalką. nawet najprostszych próba nie działa:Kodowanie piekła z lalką

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

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

na wszystko serwerze marionetka wygląda dobrze:

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 

na agenta lalek:

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

po uruchomieniu:

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

ale:

cat encoding.txt

Aktualizacja: tutaj dane HEX zadawane w komentarzach przez Jana (oglądanie go z vi :%!xxd):

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

Aktualizacja: jak zadawane w komentarzach przez Peter, prowadząc hiera bezpośrednio, nie daje żadnego wglądu. W szczególności mogę go wypróbować tylko na Serwerze, ponieważ Agent nie ma źródeł. enter image description here

moje środowisko jest dość przestarzały, ale nie wolno mi użyć dowolnej nowszej wersji (przynajmniej jeszcze nie, bez ważnego powodu):

  • SuSE Linux Enterprise 11 Service Pack 3
  • marionetka Enterprise 3.8.6
  • pe-ruby-1.9.3.551-9.pe.sles11

chciałbym docenić żadnego wglądu do tego problemu!

wiele z góry dzięki

+5

Czy jesteś pewien, że problem nie dotyczy twojego terminala? Otwórz 'encoding.txt' w edytorze szesnastkowym (lub edytorze tekstowym w trybie binarnym/hex) i sprawdź, czy plik zawiera poprawne bajty. W szczególności kodowanie UTF-8 dla prezentowanego ciągu składa się z tych sześciu bajtów: 'c3 84 c3 b1 c3 b6'. Jeśli zawiera coś innego, dodaj to do swojego pytania. –

+0

zaktualizowałem pytanie brakującymi informacjami, dzięki @JohnBollinger – mmoossen

+0

Po drugim spojrzeniu na to nie wygląda to na marionetkowy problem. Wydaje się to być problemem systemowym. –

Odpowiedz

0

Mając LANG = POSIX pewno może dokonać rzeczy niedorzeczny. LANG decyduje o kodowaniu wyświetlanym na konsoli. Zazwyczaj pożądane jest dopasowanie LANG i LC_TYPE.

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

i więcej informacji na temat lang = POSIX zobaczyć http://pubs.opengroup.org/onlinepubs/7908799/xbd/locale.html#tag_005_002

Również na niepowiązanych nocie Lalek 3,8 pewno ma wady wokół prawidłowo wyświetlanie i/lub utrzymujących znaków Unicode. Dużo pracy zostało zrobione w nowszych wersjach marionetek, aby całkowicie umiędzynarodowić (i zlokalizować) Puppet.

+0

Hi @Sam, przepraszam, ale twoja odpowiedź, ani linki, daj mi jakiś klej, co do spróbowania dalej ... w każdym razie, otrzymuję takie same wyniki na węźle używając 'LANG = de_DE.UTF-8'. Ale wciąż dziękuję za odpowiedź ... – mmoossen