2017-05-05 20 views
9

Kukla ile cehennemi kodlayan dosyadayım. bile en basit deneyin çalışmaz: kukla sunucu her konuda Kukla ile Korsan Kodlama

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

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

iyi görünüyor: kukla ajanı

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 

:

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

çalıştırdıktan sonra:

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

ama:

cat encoding.txt

Güncelleme: Burada John tarafından yorumlarında sorulan HEX verileri (vi :%!xxd ile görüntüleyen):

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

Güncelleme: yorumlarına sordu olarak Peter, hiera'yı doğrudan yürütmek, daha fazla bilgi vermez. Özel olarak, yalnızca Sunucuda deneyebilirim, çünkü Aracı'nın kaynakları yoktur. enter image description here

benim ortamı oldukça eskidir, ama (herhangi bir İYİ bir neden olmadan, en azından henüz) herhangi yeni bir sürümünü kullanmak için izin değilim:

  • SuSE Enterprise Linux 11 Service
  • Pack 3 kukla Kurumsal 3.8.6
  • pe-yakut-1.9.3.551-9.pe.sles11

i bu soruna herhangi bir fikir takdir ediyorum! peşin LANG = POSIX kesinlikle şeyler garip yapabilirsiniz Having

+5

Sorunun terminaliniz olmadığından emin misiniz? Bir hex editöründe (veya ikili/hex modlu bir metin düzenleyicide) 'encoding.txt' açın ve dosyanın doğru baytları içerip içermediğini kontrol edin. Özellikle, hazırladığınız dizge için UTF-8 kodlaması bu altı bayttan oluşacaktır: 'c3 84 c3 b1 c3 b6'. Farklı bir şey içeriyorsa, lütfen sorunuzu buna ekleyin. –

+0

Soruyu şu soruyla güncelledim: @JohnBollinger – mmoossen

+0

İkinci bir bakıştan sonra, bu bir kukla problemi gibi görünmüyor. Bu bir sistem env sorunu gibi görünüyor. –

cevap

0

yılında

çok teşekkürler. LANG, konsolun görüntülediği kodlamayı belirler. Genellikle LANG ve LC_TYPE eşleşmesi olması istenir.

bakın

: Explain the effects of export LANG, LC_CTYPE, LC_ALL

Ve LANG = POSIX fazla bilgi için alakasız bir not, aynı zamanda

http://pubs.opengroup.org/onlinepubs/7908799/xbd/locale.html#tag_005_002 bakın Kukla 3.8 kesinlikle etrafında düzgün görüntülenmeyen ve/veya Unicode karakterleri ısrarlı kusurları vardır. Kukla, Kukla'nın tamamen uluslararasılaştırılması (ve yerelleştirilmesi) için inşa ettiği çok sayıda çalışma yapılmıştır.

+0

Merhaba @Sam, pardon ama cevabınız, ne de bağlantıları, bana ne denemek için bana bir tutkal verin ... her neyse, ben aynı sonucu bir LNT = de_DE.UTF-8 kullanarak elde ediyorum. Ama yine de cevapladığınız için çok teşekkürler ... – mmoossen