文字列がバイナリでどのようにエンコードされているかを十分に認識する必要があります。あなたのコードで< < "StringLiteral" >>を実行する場合、これは単にコードポイントのリストのバイナリシリアル化であることに注意する必要があります。あなたのErlangコンパイラはあなたのコードをISO-8859-1文字として読んでいます。したがって、Latin-1文字のみを使用し、これを一貫して行う限り、うまくいくはずです。しかし、これは国際化にとってあまり親切ではありません。
今日のほとんどのアプリケーションソフトウェアでは、ユニコードエンコードが好まれるはずです。 UTF-8は最初の128コードポイントで< < "StringLiteral" >>と互換性がありますが、128コードポイントでは互換性がありませんので注意してください。あなたのコードに< < "StrïngLïteral" >>を使用すると、UTF-8でエンコードされたWebアプリケーションに表示される内容に驚くかもしれません。
< < "StrïngLterteral"/utf8 >>の形でバイナリサポートのEEP提案がありましたが、これは確定されていません。
分割しているIS0-8859-1バイトを含むマルチバイト文字がある場合は、バイナリ:split/2関数がUTF-8で予期しない結果になることがあることにも注意してください。
UTF-16は、より効率的に解析でき、32ビット文字が存在しないことを前提としている場合は、インデックスでより簡単に分割できるため、より優れたエンコーディングです。
unicode moduleは使用する必要がありますが、リテラルを使用する場合は注意深く実行してください。