Erlang-带重音字符和字符串文字的偏心率

Erlang-带重音字符和字符串文字的偏心率,erlang,diacritics,string-literals,Erlang,Diacritics,String Literals,我试图实现一个函数来区分法语元音和辅音。应该很简单,让我们看看我写了什么: -define(vowels,"aeiouyàâéèêëôù"). is_vowel(Char) -> C = string:to_lower(Char), lists:member(C,?vowels). 这很简单,但它的行为不正确: 2> char:is_vowel($â). false 虽然解释版本运行良好: 3> C = string:to_lower(

我试图实现一个函数来区分法语元音和辅音。应该很简单,让我们看看我写了什么:

-define(vowels,"aeiouyàâéèêëôù").

is_vowel(Char) -> C = string:to_lower(Char),
                  lists:member(C,?vowels).
这很简单,但它的行为不正确:

2> char:is_vowel($â).
false
虽然解释版本运行良好:

3> C = string:to_lower($â), lists:member(C,"aeiouyàâéèêëôù").
true

发生了什么事?

这里最有可能的事情是编码冲突。编译代码中的元音列表对重音字符使用了不同的字符值。您应该能够通过在编译的代码中定义
acirc()->$code>,并通过调用解释器中的
char:acirc().
$code>来查看数字输出,从而看到这一点。我认为编译器假定源文件采用ISO-Latin-1编码,但解释器将参考您的区域设置并使用该编码,如果您使用的是现代linux发行版,可能是UTF-8。有关更多信息,请参阅。

看来你是对的;实际上,我在实现acirc()时遇到了一个编码错误。我必须编写类似于:acirc()->lists:nth(1,“–”)。对应于解释器中的Ã。我会读你提到的文件。谢谢