gpt4 book ai didi

ruby - 如何解决 Puppet 的编码问题

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:37 25 4
gpt4 key购买 nike

我在 Puppet 的文件编码 hell 中。即使是最简单的尝试也行不通:

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 代理:

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

运行后:

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

但是

cat encoding.txt

这是要求的十六进制数据:

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

直接运行 hiera 不会提供任何进一步的见解。特别是,我只能在服务器上尝试,因为代理没有源。 enter image description here

我的环境已经过时了,但是我不允许使用任何更新的版本,至少现在还不能,没有任何充分的理由:

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

如果您对此问题有任何见解,我将不胜感激。

最佳答案

LANG=POSIX 肯定会让事情变得棘手。 LANG 决定了控制台显示的编码。通常需要 LANGLC_TYPE 匹配。

参见:“Explain the effects of export LANG, LC_CTYPE, LC_ALL”。

有关 LANG=POSIX 的更多信息,请参阅 POSIX Locale .

此外,在一个不相关的说明中,Puppet 3.8 在正确显示和/或保留 Unicode 字符方面肯定存在缺陷。在最近的 Puppet 构建中已经完成了大量工作,以完全国际化和本地化 Puppet。

关于ruby - 如何解决 Puppet 的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43800082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com