Вы должны очень хорошо знать, как ваша строка кодируется в ваших двоичных файлах.Когда вы делаете << "StringLiteral" >> в своем коде, вы должны знать, что это просто двоичная сериализация списка кодов.Ваш компилятор Erlang читает ваш код как символы ISO-8859-1, так что, если вы используете только символы Latin-1 и делаете это последовательно, у вас все будет хорошо, но это не очень благоприятно для интернационализации.
Большинство прикладных программ сегодня предпочитают кодировку Юникод.UTF-8 совместим с вашим << "StringLiteral" >> для первых 128 кодовых точек, но не для вторых 128, поэтому будьте осторожны.Вы можете быть удивлены тем, что видите в своих веб-приложениях в кодировке UTF-8, если в своем коде вы используете << "StrïngLïteral" >>.
Было предложение EEP о бинарной поддержке в виде << "StrïngLïteral "/ utf8 >>, но я не думаю, что это завершено.
Также имейте в виду, что ваша функция binary: split / 2 может иметь неожиданные результаты в UTF-8, если есть многобайтовый символкоторый содержит байт IS0-8859-1, на который делится.
Некоторые утверждают, что UTF-16 - лучшая кодировка для использования, поскольку она может быть проанализирована более эффективно и ее легче разделить по индексу,если вы предполагаете или проверяете, что 32-разрядных символов нет.
Следует использовать модуль Unicode , но при использовании литералов следует соблюдать осторожность.