Ruby 如何解决Puppet的编码问题
我和木偶在文件编码的地狱里。 即使是最简单的尝试也不起作用:Ruby 如何解决Puppet的编码问题,ruby,encoding,puppet,Ruby,Encoding,Puppet,我和木偶在文件编码的地狱里。 即使是最简单的尝试也不起作用: 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/h
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
但是
以下是所需的十六进制数据:
0000000: efbf bdef bfbd efbf bdef bfbd efbf bdef ................
0000010: bfbd 0a ...
直接运行hiera不会提供任何进一步的见解。特别是,我只能在服务器上尝试,因为代理没有源代码。
我的环境已经过时,但我不允许使用任何更新的版本,至少现在还不允许,没有任何充分的理由:
- SuSE Enterprise Linux 11 Service Pack 3
- 傀儡企业3.8.6
- pe-ruby-1.9.3.551-9.pe.sles11
我希望能对这个问题有所了解。拥有
LANG=POSIX
肯定会让事情变得一团糟LANG
决定了控制台显示的编码。通常需要有LANG
和LC\u类型
匹配
见:“”
有关LANG=POSIX
的更多信息,请参阅
另外,与此无关的是,Puppet 3.8在正确显示和/或持久化Unicode字符方面肯定存在缺陷。在最近的Puppet构建中已经做了大量工作,以完全国际化和本地化Puppet。您确定问题不在于您的终端吗?在十六进制编辑器(或具有二进制/十六进制模式的文本编辑器)中打开
encoding.txt
,检查文件是否包含正确的字节。特别是,您呈现的字符串的UTF-8编码将由以下六个字节组成:c384c3b1c3b6
。如果它包含一些不同的内容,那么请将其添加到您的问题中。我用丢失的信息更新了问题,谢谢@johnbollinger再次查看后,这似乎不是一个傀儡问题。这似乎是一个系统环境问题。@MattSchuchard:可能是,但我可以检查什么来进一步了解?如果从命令行使用hiera,会得到什么?e、 g.:`#hiera-d test>test-encoding.txt`(您可能需要使用-c来查找正确的文件)嗨@Sam,很抱歉,但是您的答案和链接,告诉我下一步要尝试什么。。。无论如何,我使用LANG=de_de.UTF-8
在节点上得到相同的结果。但还是非常感谢你的回答。。。