Erlang Условия Unicode String - PullRequest
0 голосов
/ 07 мая 2018

У меня есть список кортежей, созданный некоторой функцией, который выглядит следующим образом:

[{"a","ą"}, {"ą","a"}, {"a","o"}, {"o","e"}]

Но когда я его печатаю, я вижу в терминале:

[{"a",[261]}, {[261],"a"}, {"a","o"}, {"o","e"}]

Я обычно печатаю это с помощью этой команды:

io:format("~p~n", [functionThatGeneratesListOfTuples()]),

Пока я обнаружил, что вам нужно использовать ~ts при печати строк Unicode, поэтому я попробовал это:

Pairs = functionThatGeneratesListOfTuples(), PairsStr = io_lib:format("~p", [Pairs]), io:format("~ts~n", [PairsStr]),

Есть ли возможность добиться того, чтобы строки Юникода были представлены соответствующим образом?

1 Ответ

0 голосов
/ 07 мая 2018

Эвристика для определения списков целых чисел, поскольку строки по умолчанию распознают только символы Latin-1, поэтому [65,66,67] печатается как "ABC", но [665,666,667] печатается как "[665,666,667]", даже если вы используете ~tp , Вы должны запустить Erlang как erl +pc unicode, чтобы он принимал печатаемые кодовые точки Unicode выше 255. В этом режиме [665,666,667] печатается как "ʙʚʛ" с ~tp (но не с ~p).

См. http://erlang.org/doc/man/io.html#printable_range-0 для получения дополнительной информации, а также недавнего улучшения документации, которая будет включена в OTP 21: https://github.com/erlang/otp/pull/1737/files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...