У меня есть две системы надежного человека человечности. Один недавно установленный и один немного более старый.
В этих системах я испытываю некоторые затруднения из-за en_US
локаль, это ведет себя по-другому, наиболее легко замеченное с этой командой:
printf '\xe5\xe4\xf6' | LANG=en_US LC_ALL=en_US hexdump -vC
На более старом я получаю ожидаемый вывод:
00000000 e5 e4 f6 |åäö|
00000003
но на недавно установленном я получаю точки вместо åäö:
00000000 e5 e4 f6 |...|
00000003
Я также проверил систему CentOS 6, и там я также получаю вывод, который я ожидаю (первый). Но, если я работаю locale-gen --purge
в более старой системе это изменяет на более новое (неправильный IMO) вывод.
Кто-либо знает, существует ли что-то, что я могу сделать, чтобы заставить новую систему генерировать вывод, который я ожидаю, или если существует что-то, что это изменяется в этой локали так, чтобы согласился, что символы больше не являются печатаемыми, или если существует что-либо еще, что могло бы влиять на него?
localedef - список имеет идентичный вывод:
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US
en_US.iso88591
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
es_US
es_US.iso88591
es_US.utf8
Я нашел один способ распечатать те символы с помощью en_US локали:
Нажимают Alt+F2 и работают env LANG=en_US gnome-terminal
. Тогда в окне терминала:
$ printf '\xe5\xe4\xf6\n'
åäö
$
Это указало бы, что нет никакой проблемы с локалью, по крайней мере, но она включает ISO-8859-1, кодирующий как ожидалось.
Редактирование:
Печать с помощью hexdump хорошо работает также:
$ printf '\xe5\xe4\xf6' | hexdump -vC
00000000 e5 e4 f6 |åäö|
00000003
$
Мне удалось вернуть его к работе. Во-первых, удалите все локали (я на самом деле использую изображение докера так, чтобы часть только запускалась новый), тогда
echo "en_US ISO-8859-1" >> /var/lib/locales/supported.d/local
dpkg-reconfigure locales
Это генерирует рабочие файлы локали. После этого я могу добавить UTF-8 один, не повреждая его.
echo "en_US UTF-8" >> /var/lib/locales/supported.d/local
dpkg-reconfigure locales
Теперь я предполагаю, что должен понять, как сделать отчет об ошибках...