Есть ли способ расширить iconv для поддержки большего количества кодировок?

Я бы перевернул логику:

# Note that the variables 'master' and 'integration' are NOT defined yet
if [ -f '.vcs.json' ]; then
  master="${`read_json -f.vcs.json -k git.master`:-master}"
  integration="${`read_json -f.vcs.json -k git.integration`:-integration}"
fi
# Set default values if empty or missing
: ${master:=master} ${integration:=integration}
# They are now guaranteed to be non-empty
echo $master $integration
2
30.12.2020, 21:09
2 ответа

Если ваша iconvреализация исходит из библиотеки GNU C, то да, она расширяема несколькими способами.

В библиотеке GNU C обработка набора символов реализована в загружаемых модулях, которые вы найдете в виде .soфайлов в/usr/lib/gconv(или /usr/lib/x86_64-linux-gnu/gconvили в любом другом каталоге lib, используемом вашей системой ). Какой набор символов обрабатывается каким модулем, описано в текстовом файле /usr/lib/gconv/gconv-modules. В зависимости от ваших требований вы можете добавить новый модуль и/или новое определение. В обоих случаях вам необходимо обновить кеши, используя iconvconfig. Вам не нужно будет интегрировать ваши изменения в саму библиотеку C, чтобы распространять их.

В руководстве, указанном выше, содержится более подробная информация.

Другие реализацииiconvтакже могут быть расширяемыми; см. местную документацию, если вы не используете библиотеку GNU C.

2
18.03.2021, 22:39

Предполагая, что вы используете Linux и glibc, вы можете поддерживать дополнительные кодировки, создав один или несколько совместно загружаемых gconvмодулей.

Расположение модулей gconvпо умолчанию — /usr/lib64/gconvв 64-битных -системах и /usr/lib/gconvв 32-битных -системах.

См. основную информацию на справочных страницах iconv(1), iconv(3)и iconvconfig(8).

Подробнее см. https://www.gnu.org/software/libc/manual/html_node/glibc-iconv-Implementation.html. Приведен пример структуры функции преобразования. Посмотрите на исходный код glibcдля рабочих примеров.

1
18.03.2021, 22:39

Теги

Похожие вопросы