iex(1)> 'hełło'
[104, 101, 322, 322, 111]
iex(2)> <<104, 101, 322, 322, 111>>
"heBBo"
不应该<<104, 101, 322, 322, 111>>
返回“hełło”,因为它使用相同的代码点吗?
答案 0 :(得分:4)
我现在明白了,当值为255的时候,需要告诉bitstring如何对值进行编码。以下打印字符串正确。
<<104, 101, 322::utf8, 322::utf8, 111>> #=> "hełło"
编辑1:要添加更多有关我为什么会这样做的细节&#34; heBBo&#34;,了解值的截断是如何工作的很重要。一个字节可以存储最大值256.如果给出一个值,例如322,那么存储的内容实际上是322-256,即66,它是&#39; B&#39;的代码点。
因此我的<<104, 101, 322, 322, 111>>
条目被截断为&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 104,106