4

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.

いくつかの Intuit フォーラムは、XML を UTF-8 に変更する必要があると言っています (彼らが言っているのはそれだけで、実際の解決策はありません)。QBFC はデータの送受信に XML を使用していることは明らかですが、とにかく見つけることができませんデフォルトのエンコーディングをオーバーライドします。

リクエストは次のコードで作成されます。例外は DoRequests() で発生します

IMsgSetRequest req = Session.GetLatestMsgSetRequest();
ICustomerQuery cq = req.AppendCustomerQueryRq();
IMsgSetResponse responseSet = Session.QBSM.DoRequests(req);
4

3 に答える 3

6

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");
于 2013-06-28T14:03:20.730 に答える
0

QBFC での解決策はわかりませんが、回避策として、qbXML に直接アクセスし、XML を使用してこの特定のメッセージの応答を送受信できます。基になる XML のラッパーである QBFC に制限があるようです。

于 2009-05-04T20:31:39.923 に答える