Назад | Перейти на главную страницу

Есть ли способ указать ресурсу Puppet augeas, какую кодировку использовать?

Я новичок в augeas, и у меня много ошибок, например:

Could not evaluate: invalid byte sequence in UTF-8

в частности, я ожидаю, что augeas будет соблюдать декларацию кодировки в XML-файле

<?xml version="1.0" encoding="ISO-8859-1"?>

но в исходном коде объектива я не вижу, что это учтено, но я могу ошибаться, чувствуя, что не понимаю большую часть формата линз: https://github.com/hercules-team/augeas/blob/master/lenses/xml.aug

или что Java-Properties-File всегда обрабатываются как ISO-8859-1, и снова никаких следов кодировки в исходном коде объектива: https://github.com/hercules-team/augeas/blob/master/lenses/properties.aug

мой первый вопрос: делает ли Augeas правильную кодировку для XML и файлов свойств?

мой второй вопрос: есть ли способ указать augeas, какую кодировку использовать?

восстанавливать

предполагая, что кодировка системы по умолчанию - UTF-8:

vi testUTF.properties

# Käse
abc=test
# tèté
persona=niño

И все нормально:

puppet-test:~ # augtool --noautoload
augtool> set /augeas/load/Properties/lens Properties.lns
augtool> set /augeas/load/Properties/incl "/root/testUTF.properties"
augtool> load
augtool> print /augeas/files/root/testUTF.properties
/augeas/files/root/testUTF.properties
/augeas/files/root/testUTF.properties/path = "/files/root/testUTF.properties"
/augeas/files/root/testUTF.properties/mtime = "1491478421"
/augeas/files/root/testUTF.properties/lens = "Properties.lns"
/augeas/files/root/testUTF.properties/lens/info = "/usr/share/augeas/lenses/dist/properties.aug:25.20-.53:"
augtool> print /files/root/testUTF.properties
/files/root/testUTF.properties
/files/root/testUTF.properties/#comment[1] = "K\303\244se"
/files/root/testUTF.properties/abc = "test"
/files/root/testUTF.properties/#comment[2] = "t\303\250t\303\251"
/files/root/testUTF.properties/persona = "ni\303\261o"

Теперь конвертируем файл в iso-8859-1:

iconv --from-code UTF-8 --to-code ISO-8859-1 -o testIso.properties testUTF.properties

и

puppet-test:~ # augtool --noautoload
augtool> set /augeas/load/Properties/lens Properties.lns
augtool> set /augeas/load/Properties/incl "/root/testIso.properties"
augtool> load
augtool> print /augeas/files/root/testIso.properties
/augeas/files/root/testIso.properties
/augeas/files/root/testIso.properties/path = "/files/root/testIso.properties"
/augeas/files/root/testIso.properties/mtime = "1491478512"
/augeas/files/root/testIso.properties/lens = "Properties.lns"
/augeas/files/root/testIso.properties/lens/info = "/usr/share/augeas/lenses/dist/properties.aug:25.20-.53:"
augtool> print /files/root/testIso.properties
/files/root/testIso.properties
/files/root/testIso.properties/#comment[1] = "K\344se"
/files/root/testIso.properties/abc = "test"
/files/root/testIso.properties/#comment[2] = "t\350t\351"
/files/root/testIso.properties/persona = "ni\361o"

и теперь все по-прежнему в порядке, arghhh, не должно быть...

Значит, это точно НЕ проблема августа, а проблема марионеток.

Повторяю свой вопрос:

Есть ли способ указать ресурсу Puppet augeas, какую кодировку использовать?

Спасибо заранее