Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何解决Puppet的编码问题_Ruby_Encoding_Puppet - Fatal编程技术网

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
在节点上得到相同的结果。但还是非常感谢你的回答。。。