Основной принцип, который вы должны помнить, состоит в том, что вы все время видите Unicode. Unicode - это строки чисел, и без какой-либо специальной инструкции оболочка просто покажет вам, что: строки чисел.
Вы можете использовать io:format/2
показать Unicode, как вы ожидаете (если ваш терминал может печатать символы, то есть) путем перехода от
io:format("Print a term: ~p~n", [Term])
в
io:format("Print a Unicode term: ~tp~n", [UnicodeTerm])
Есть некоторые основные кодировки вещи, которые могут быть полезны при работе с файлами Юникода в качестве данных (я не уверен в том, что file:consult/1
получил термины Erlang). Вот модуль заглушки можно построить на для выполнения FILE_READ и FILE_WRITE:
%% Beginnings of a utf8 file I/O module
%% -*- coding: utf8 -*-
-module(u_file).
-export([write_file/2, read_file/1]).
write_file(Filename, UTF8_data) ->
file:write_file(Filename, unicode:characters_to_binary(UTF8_data, utf8)).
read_file(Filename) ->
case file:read_file(Filename) of
{ok, Data} -> {ok, unicode:characters_to_list(Data, utf8)};
Other -> Other
end.
Я не уверен, что вы должны видеть из таблиц ETS, но если это просто проверка значения в оболочке, то вам просто необходимо переключиться с подстановки p-члена на подстановку терминалов ~ tp unicode. Фактически, использование ~ tp везде - не плохая идея, так как она работает точно так же, как и на других данных (ASCII - это подмножество UTF-8, это удобно!).
Надеюсь, это приблизит вас к решению. В любом случае, I сильно рекомендуют, чтобы каждый Эрлангер прочитал часть документов «Using Unicode in Erlang».
Привет, большое спасибо за ответ на мой вопрос. Я использую OTP 17.0. Я должен действительно прояснить свою проблему, я пытаюсь создать мешок ETS через оболочку и попробовать eta: вставить смешные символы, а затем eta: искать и посмотреть, могу ли я прочитать. Когда я смотрю на результат, он сохраняется как список целых чисел, поэтому, когда я смотрю на него, результат также является списком Intergers. Это нормально? – xcoder
Я также отредактировал вопрос. Thx снова. – xcoder
Да, список целых чисел правильный. Ответ zxq9 показывает вам, как красиво печатать строку для вашей отладки/журналов, но список целых чисел - это то, как фактически представлена каждая строка Erlang. Рассмотрим результат этой строки: «hello» ++ [32,119,111,114,108,100] .' (++ - оператор списка добавлений) –