tôi đang ở trong danh sách mã hóa địa ngục với con rối. ngay cả những thử đơn giản không hoạt động:Mã hóa địa ngục bằng con rối
hiera-data/test.yaml:
---
test: Äñö
init.pp:
$test = hiera('test')
file { "/root/encoding.txt":
ensure => file,
content => $test
}
trên tất cả mọi thứ máy chủ bù nhìn có vẻ tốt đẹp:
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
trên đại lý rối:
puppet-test:~ # locale
LANG=POSIX
LC_CTYPE=en_US.UTF-8
sau khi chạy:
puppet-test:~ # file -i encoding.txt
encoding.txt: text/plain charset=utf-8
nhưng:
Cập nhật: ở đây dữ liệu HEX hỏi trong các ý kiến của John (xem nó với vi :%!xxd
):
0000000: efbf bdef bfbd efbf bdef bfbd efbf bdef ................
0000010: bfbd 0a ...
Cập nhật: như hỏi trong các ý kiến của Peter, chạy hiera trực tiếp không cung cấp bất kỳ cái nhìn sâu sắc hơn nữa. Đặc biệt, tôi chỉ có thể thử trên Server, vì Agent không có nguồn.
môi trường của tôi là khá lỗi thời, nhưng tôi không được phép sử dụng bất kỳ phiên bản mới hơn (ít nhất là chưa, mà không cần bất kỳ lý do chính đáng):
- SuSE Enterprise Linux 11 Service Pack 3
- Múa rối Enterprise 3.8.6
- pe-ruby-1.9.3.551-9.pe.sles11
tôi sẽ đánh giá cao bất cứ cái nhìn sâu sắc cho vấn đề này!
cảm ơn trước
Bạn có chắc chắn rằng vấn đề không phải là thiết bị đầu cuối của bạn? Mở 'encoding.txt' trong trình soạn thảo hex (hoặc trong trình soạn thảo văn bản có chế độ nhị phân/hex) và kiểm tra xem tệp có chứa đúng byte hay không. Cụ thể, mã hóa UTF-8 cho chuỗi bạn trình bày sẽ bao gồm sáu byte này: 'c3 84 c3 b1 c3 b6'. Nếu nó có chứa một cái gì đó khác nhau, sau đó xin vui lòng thêm rằng cho câu hỏi của bạn. –
tôi đã cập nhật câu hỏi với thông tin còn thiếu, Cảm ơn @JohnBollinger – mmoossen
Sau lần xem thứ hai về vấn đề này, điều này dường như không phải là vấn đề con rối. Điều này có vẻ như một vấn đề hệ thống env. –