Xml Erlang xmerl_sax_解析器抛出错误
我正在用xmerl_sax_parser:file()解析一个相当大的文件,中途得到一个异常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
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