C libxml 编码问题。
C libxml encoding issue.
我在使用 libxml2 两天后就遇到了一个问题,这让我很烦。
基本上,我使用套接字通过网络发送一个 xml 缓冲区。当我在服务器上收到它并尝试解析它时,它说:
parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xFF 0xFF 0xFF 0xFF
我试图发送的 xml 树的一个标签 (biometricData) 包含奇怪的奇怪字符,因为这是加密数据的原始缓冲区。
<biometricData>������������������������
</biometricHeader><biometricData>
^
客户端:
xmlDocDumpMemoryEnc(doc, &(*out), &buffersize, "UTF-8");
服务器端:
int verify(unsigned char *data, int len) //The routine to check the data and authenticate user.
xmlParserCtxtPtr ctx_ptr = xmlNewParserCtxt();
doc = xmlCtxtReadMemory(ctx_ptr, (const char*)data, len, "data.xml", "UTF-8", 0);
服务器抛出此错误:
Entity: line 2: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xFF 0xFF 0xFF 0xFF
d>2.23.42.9.10.4.2</oid></formatOwner></format></biometricHeader><biometricData>
^
我尝试更改以将服务器端的编码更改为 ISO-8859-1,并且成功了!但是,当我尝试执行 nodeGetContent(biometricData) 时,数据未采用其原始编码,因此缓冲区完全无用。
感谢您抽出时间。
我搜索了 xmlCharEncodingHandler 但我没有成功...
使用 base64 对所有二进制数据进行编码。 XML 解析器通常 can/will 不处理二进制数据。
我不知道您处理了多少二进制数据,所以如果 base64 encoding/decoding 变得低效,请查看 http://www.xml.com/pub/a/98/07/binary/binary.html
我在使用 libxml2 两天后就遇到了一个问题,这让我很烦。
基本上,我使用套接字通过网络发送一个 xml 缓冲区。当我在服务器上收到它并尝试解析它时,它说:
parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xFF 0xFF 0xFF 0xFF
我试图发送的 xml 树的一个标签 (biometricData) 包含奇怪的奇怪字符,因为这是加密数据的原始缓冲区。
<biometricData>������������������������
</biometricHeader><biometricData>
^
客户端:
xmlDocDumpMemoryEnc(doc, &(*out), &buffersize, "UTF-8");
服务器端:
int verify(unsigned char *data, int len) //The routine to check the data and authenticate user.
xmlParserCtxtPtr ctx_ptr = xmlNewParserCtxt();
doc = xmlCtxtReadMemory(ctx_ptr, (const char*)data, len, "data.xml", "UTF-8", 0);
服务器抛出此错误:
Entity: line 2: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xFF 0xFF 0xFF 0xFF
d>2.23.42.9.10.4.2</oid></formatOwner></format></biometricHeader><biometricData>
^
我尝试更改以将服务器端的编码更改为 ISO-8859-1,并且成功了!但是,当我尝试执行 nodeGetContent(biometricData) 时,数据未采用其原始编码,因此缓冲区完全无用。
感谢您抽出时间。 我搜索了 xmlCharEncodingHandler 但我没有成功...
使用 base64 对所有二进制数据进行编码。 XML 解析器通常 can/will 不处理二进制数据。
我不知道您处理了多少二进制数据,所以如果 base64 encoding/decoding 变得低效,请查看 http://www.xml.com/pub/a/98/07/binary/binary.html