Quickbooks online 使用UTF-8字符在线查询QuickBook

Quickbooks online 使用UTF-8字符在线查询QuickBook,quickbooks-online,Quickbooks Online,我正在尝试使用API按名称查询客户。带有非ASCII字符的名称(例如민준或Włodarski)导致查询失败。下面是一个查询示例: SELECT * FROM Customer WHERE FamilyName = 'Włodarski' 我按照建议对其进行URL编码,并获得: 但当我提交请求时,我得到了回复: <IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2017-03-0

我正在尝试使用API按名称查询客户。带有非ASCII字符的名称(例如
민준
Włodarski
)导致查询失败。下面是一个查询示例:

SELECT * FROM Customer WHERE FamilyName = 'Włodarski'
我按照建议对其进行URL编码,并获得:

但当我提交请求时,我得到了回复:

<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2017-03-03T15:14:26.774-08:00">
  <Fault type="ValidationFault">
    <Error code="4000">
      <Message>Error parsing query</Message>
      <Detail>QueryParserError: Invalid content. Lexical error at line 1, column 43.  Encountered: "\u0142" (322), after : "\'W"</Detail>
    </Error>
  </Fault>
</IntuitResponse>

分析查询时出错
QueryParserError:无效内容。第1行第43列的词法错误。遇到“\'W”之后的“\u0142”(322)
我需要做什么才能找到这个客户

我向Intuit提出了这个问题,并提供了以下信息:

如果要查询整个字符串,可以在不使用非ASCII字符的情况下对整个查询进行URL编码,然后将URL编码字符添加到此查询中。这方面的一个例子是:
从%20客户%20中选择%20%2A%20,其中%20GivenName%3D%27m%C3%A5na

从客户那里选择*GivenName='måna'

%C3%A5
是我的非ascii字符的URL编码
å

您也可以这样做:
从Customer where GivenName中选择*如'm%na'
,然后对整个查询进行编码,该查询将忽略第二个字符,并按该顺序搜索其余字符


我认为选择他们提供的
å
示例是因为它是扩展ASCII字符集的一部分。我已经要求他们澄清是否可以使用UTF-8字符作为搜索字符串。

简短的回答是,它不受支持

我向Intuit的支持部门提交了一个问题,下面是他们的初步回答

如果要查询整个字符串,可以在不使用非ASCII字符的情况下对整个查询进行URL编码,然后将URL编码字符添加到此查询中。这方面的一个例子是: 从%20客户%20中选择%20%2A%20,其中%20给定名称%3D%270M%C3%A5na 选择*来自客户,其中GivenName='måna' %C3%A5是我的非ascii字符å的URL编码

您也可以这样做: 选择*from Customer where GivenName,如'm%na',然后对整个查询进行编码,该查询将忽略第二个字符,并按该顺序搜索其余字符

做了一点测试。更仔细地看,他们选择的例子似乎有效,因为它是一个扩展的ASCII字符。我要求澄清如何处理UTF-8字符,如
민준并在UI中查看

我的回答是:

我可以复制您建议的“å”字符,但它看起来像是扩展ASCII集的一部分,因此编码不同。你能提供一个UTF-8字符的例子吗,就像我最初查询中的一样?或者민준'? 我能够在XML和API中提交这些值,但无法查询它们

用%通配符替换字符的建议很有趣,但会返回其他记录,如“Mona”或“Mina”

昨天他们终于找到我了:

您好,Andrew,我们不支持使用这些字符的查询。您必须在您的一端进行编码,然后在for循环中为所有客户比较字符

那真是太好了

<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2017-03-03T15:14:26.774-08:00">
  <Fault type="ValidationFault">
    <Error code="4000">
      <Message>Error parsing query</Message>
      <Detail>QueryParserError: Invalid content. Lexical error at line 1, column 43.  Encountered: "\u0142" (322), after : "\'W"</Detail>
    </Error>
  </Fault>
</IntuitResponse>