Elixir无效字符串

时间:2016-02-14 11:49:52

标签: elixir

我在iex中尝试了以下代码:

iex(13)> String.valid?(<<128>>)
false
iex(14)> String.valid?(<<191>>)
false

为什么这两个都不是有效字符串?

1 个答案:

答案 0 :(得分:2)

像Ramon Snir所说,你需要使用utf8。从入门指南:

  

字符串是UTF-8编码的二进制文件。为了准确理解我们的意思,我们需要理解字节和代码点之间的区别。

     

...

     

当以字节表示代码点时,我们需要以某种方式对它们进行编码。 Elixir选择UTF-8编码作为其主要和默认编码。当我们说一个字符串是UTF-8编码的二进制文件时,我们的意思是字符串是一组字节,以表示某些代码点的方式组织,如UTF-8编码所指定的那样。

<<128 :: utf8>> |> String.valid? # => true

您可以在以下网址了解详情:Binaries, strings and char lists