我在用木偶编码地狱的文件中。 即使是最简单的尝试也行不通:
hiera-data/test.yaml:
---
test: Äñö
init.pp:
$test = hiera('test')
file { "/root/encoding.txt":
ensure => file,
content => $test
}
在puppet服务器上的一切看起来都很好:
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
跑完后:
puppet-test:~ # file -i encoding.txt
encoding.txt: text/plain charset=utf-8
但:
更新:此处约翰的评论中提到的HEX数据(使用vi :%!xxd
查看):
0000000: efbf bdef bfbd efbf bdef bfbd efbf bdef ................
0000010: bfbd 0a ...
更新:正如彼得的评论中所述,直接运行hiera并未提供任何进一步的见解。特别是,我只能在服务器上试用它,因为代理没有源。
我的环境已经过时了,但我不允许使用任何更新的版本(至少现在没有,没有任何好的理由):
我很感激对此问题的任何见解!
非常感谢提前
答案 0 :(得分:0)
拥有LANG = POSIX肯定会让事情变得棘手。 LANG是决定控制台显示的编码的因素。通常需要使用LANG和LC_TYPE匹配。
请参阅:Explain the effects of export LANG, LC_CTYPE, LC_ALL
有关LANG = POSIX的更多信息,请参阅http://pubs.opengroup.org/onlinepubs/7908799/xbd/locale.html#tag_005_002
此外,在一个不相关的说明中,Puppet 3.8肯定存在关于正确显示和/或持久化unicode字符的缺陷。在最近的Puppet构建中已经做了很多工作来完全国际化(和本地化)Puppet。