Предположим, мы получим charlist
из иностранного источника, и она в основном представляет собой строку в некоторых унаследованных 1-байтового кодирования как ISO-8859-2
. Существует пакет CodepageX
, который упрощает преобразование между различными кодировками, но функция to_string
ожидает ввода [binary
].Почитаю charlist в странах, не UTF-8 кодировкой
Все стандартные функции библиотеки предположим Latin1
ака ISO-8859-1
ввода кодировки при переходе к utf8
(как to_string
, IO.chardata_to_string
, "#{}"
и т.д.)
То, что я придумал это:
input
|> to_string
|> Codepagex.from_string!(:iso_8859_1)
|> Codepagex.to_string!(:iso_8859_2) # target encoding
который является бит уродливый.
Есть ли надежный и удобный встроенный/идиоматический способ эликсира, чтобы получить string
из charlist
в известной кодировке?
Это лучше: 'вход |>: erlang.list_to_binary |> Codepagex.to_string (: iso_8859_2)'!? Кажется, что он работает правильно: '[224] |>: erlang.list_to_binary |> Codepagex.to_string! (: Iso_8859_2) # =>" ŕ "'. – Dogbert
@ Dogbert да, это определенно более понятно, поскольку это не связано с подозрительным и избыточным 'to_string |> Codepagex.from_string! (: Iso_8859_1)' conversion и да, он работает правильно. Пожалуйста, отправьте ответ. – mudasobwa