Xml Erlang xmerl_sax_解析器抛出错误

Xml Erlang xmerl_sax_解析器抛出错误,xml,parsing,erlang,Xml,Parsing,Erlang,我正在用xmerl_sax_parser:file()解析一个相当大的文件,中途得到一个异常 exception throw: {'EXIT',{undef,[{xmerl_sax_parser_utf8,cf, [<<"Ä">>, {xmerl_sax

我正在用xmerl_sax_parser:file()解析一个相当大的文件,中途得到一个异常

exception throw: {'EXIT',{undef,[{xmerl_sax_parser_utf8,cf,
                                                       [<<"Ä">>,
                                                        {xmerl_sax_parser_state}]}]}}

有没有关于如何正确修复或处理的想法?

此部分错误,抱歉:o(

可能是您正在读取的文件没有用utf8编码。我已签入 在扩展ASCII表中,显示的奇怪字符具有 142(2#10001110)不是有效的utf8代码:

根据这个表,它是一个延续代码。因此,您可以使用十六进制编辑器检查输入文件,查找字节142(16#8E)

编辑:我意识到我不知道打印异常消息使用的是哪种字符编码。我在控制台中进行了一些测试,得到了以下结果:

(exec@WXFRB1824L)1> L = <<"Ä">>.
<<"Ä">>
(exec@WXFRB1824L)2> size(L).  
1
(exec@WXFRB1824L)3> <<L1:4,L2:4>> = L.
<<"Ä">>
(exec@WXFRB1824L)4> L1.
12
(exec@WXFRB1824L)5> L2.
4
(exec@WXFRB1824L)6> L = <<2#11000100>>.
<<"Ä">>
(exec@WXFRB1824L)7> 2#11000100.
196
(exec@WXFRB1824L)1> L=。
(exec@WXFRB1824L)2> 尺寸(L)。
1.
(exec@WXFRB1824L)3> =L。
(exec@WXFRB1824L)4> L1。
12
(exec@WXFRB1824L)5> L2。
4.
(exec@WXFRB1824L)6> L=。
(exec@WXFRB1824L)7> 2#11000100.
196
这不是按UTF8打印的,而是ASCII(我犯了一个错误,我找不到从哪里得到这个值142…) 这改变了情况,因为根据下表,196是2字节数据的有效UT8第一字节:

我发现
SAX
库解析器非常容易使用。我建议与xmerl相比使用它。

谢谢Pascal,我会研究它。它看起来像aÄ,但它是aÃ。这很奇怪;有人试图调用
xmerl_SAX_parser\u utf8:cf/2
,但我的版本只有
cf/3
cf/4
 cf/5
…这是哪个Erlang版本?
(exec@WXFRB1824L)1> L = <<"Ä">>.
<<"Ä">>
(exec@WXFRB1824L)2> size(L).  
1
(exec@WXFRB1824L)3> <<L1:4,L2:4>> = L.
<<"Ä">>
(exec@WXFRB1824L)4> L1.
12
(exec@WXFRB1824L)5> L2.
4
(exec@WXFRB1824L)6> L = <<2#11000100>>.
<<"Ä">>
(exec@WXFRB1824L)7> 2#11000100.
196