我正在尝试使用 API 按名称查询客户。带有非 ASCII 字符(例如??或W?odarski)的名称会导致查询失败。这是一个示例查询:
SELECT * FROM Customer WHERE FamilyName = 'W?odarski'
Run Code Online (Sandbox Code Playgroud)
我按照https://developer.intuit.com/hub/blog/2014/03/20/advanced-sql-queries 的建议对其进行 URL 编码并得到:
https://sandbox-quickbooks.api.intuit.com/v3/company/193514472385819/query?query=SELECT%20*%20FROM%20Customer%20WHERE%20LastName%20=%20'W%C5%82odarski'%20STARTPOSITION%201%20MAXRESULTS%201000
Run Code Online (Sandbox Code Playgroud)
但是当我提交该请求时,我得到了回复:
<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>
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能找到这个客户?
我将问题提交给 Intuit 的支持,并提供了以下内容:
如果你想查询整个字符串,你可以对整个查询进行 URL 编码而不是非 ASCII 字符,然后将 URL 编码的字符添加到这个查询中。这方面的一个例子是:
select%20%2A%20from%20Customer%20where%20GivenName%3D%27m%C3%A5na
select * from Customer where GivenName='måna'
%C3%A5是我的非 ascii 字符的 URL 编码å。您还可以执行以下操作:
select * from Customer where GivenName like 'm%na'然后对整个查询进行编码,这将忽略第二个字符并按该顺序搜索其余字符。
我认为å选择他们提供的示例是因为它是扩展 ASCII 字符集的一部分。我已经要求他们澄清是否可以将 UTF-8 字符用作搜索字符串。
简短的回答是它不受支持。
我向 Intuit 的支持部门提交了一个问题,这是他们的初步答复。
如果你想查询整个字符串,你可以对整个查询进行 URL 编码而不是非 ASCII 字符,然后将 URL 编码的字符添加到这个查询中。一个例子是: select%20%2A%20from%20Customer%20where%20GivenName%3D%27m%C3%A5na select * from Customer where GivenName='måna' %C3%A5 是我的非 ascii 字符的 URL 编码一种。
您还可以执行以下操作: select * from Customer where GivenName like 'm%na' 然后对整个查询进行编码,这将忽略第二个字符并按该顺序搜索其余字符。
做了一点测试。再看一遍,他们选择的示例似乎有效,因为它是一个扩展的 ASCII 字符。我要求澄清如何处理 UTF-8 字符,例如??我可以通过 API 设置并在 UI 中查看。
我回复了:
我能够复制您建议的“å”字符,但它看起来像是扩展 ASCII 集的一部分,因此编码方式不同。你能提供一个像我初始查询中那样的 UTF-8 字符的例子吗?也许 '??'?我能够在 XML 和 API 中提交这些值,但无法查询它们。
用 % 通配符替换字符的建议很有趣,但会返回额外的记录,例如“Mona”或“Mina”。
昨天他们终于回复了我:
你好安德鲁,我们不支持这些字符的查询。您必须在最后进行编码,然后在 for 循环中为所有客户比较字符。
所以这是令人愉快的。
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |