在Quickbooks SDK中使用带重音符号的字符

Jac*_*ble 4 c# sdk quickbooks qbfc

使用Quickbooks SDK QBFC 7.0。当我尝试获取快速簿中所有客户的列表时,如果其中任何一个客户的名字都带有诸如è的重音字符,那么我会遇到一个例外:

An Exception occurred! Type:UTFDataFormatException, Message: invalid byte 2 (<) 
of a 3-byte sequence. SAXParseException: error ar line 1, column 23 in XML data.
Run Code Online (Sandbox Code Playgroud)

一些Intuit论坛已经说过,我必须将XML更改为UTF-8(这就是他们所说的,他们没有给出真正的解决方案),QBFC显然确实使用XML来发送和接收数据,但无论如何我都找不到覆盖默认编码。

该请求使用以下代码创建。发生在DoRequests()上的异常

IMsgSetRequest req = Session.GetLatestMsgSetRequest();
ICustomerQuery cq = req.AppendCustomerQueryRq();
IMsgSetResponse responseSet = Session.QBSM.DoRequests(req);
Run Code Online (Sandbox Code Playgroud)

小智 5

QBFC有一个错误,无法正确编码。无法使用QBFC覆盖编码。您必须使用qbXML解决方案,或者如果在创建查询时使用IncludeRetElementList选项,则它应该正确编码。请记住,如果使用IncludeRetElementList,则必须指定要返回的确切字段。

ICustomerQuery custQuery = MsgRequest.AppendCustomerQueryRq();
custQuery.IncludeRetElementList.Add("ListID");
custQuery.IncludeRetElementList.Add("Name");
custQuery.IncludeRetElementList.Add("FirstName");
custQuery.IncludeRetElementList.Add("LastName");
custQuery.IncludeRetElementList.Add("ShipAddress");
Run Code Online (Sandbox Code Playgroud)