Delphi XE的UTF8 JSON字符串中存在错误字符的问题

Delphi XE的UTF8 JSON字符串中存在错误字符的问题,json,delphi,utf-8,delphi-xe,Json,Delphi,Utf 8,Delphi Xe,我们有一个delphixe应用程序,它与在Node中编写的云应用程序交换JSON数据 一般来说,一切都很好——但偶尔我们会在一些字符串中出现坏(未知)字符——我们在跟踪它时遇到问题。这些字符呈现为菱形,字符代码为65533 我们执行rest POST调用从云中获取数据,并将其作为包含一些元数据和记录数组的JSON对象获取。我们使用DBXJson的TJsonObject以 jsv := TJSONObject.parseJsonValue(s) 其中s是我们从Post通话中获得的数据 由此,我们

我们有一个delphixe应用程序,它与在Node中编写的云应用程序交换JSON数据

一般来说,一切都很好——但偶尔我们会在一些字符串中出现坏(未知)字符——我们在跟踪它时遇到问题。这些字符呈现为菱形,字符代码为
65533

我们执行rest POST调用从云中获取数据,并将其作为包含一些元数据和记录数组的JSON对象获取。我们使用DBXJson的TJsonObject以

jsv := TJSONObject.parseJsonValue(s)
其中s是我们从Post通话中获得的数据

由此,我们使用TJsonArray获取记录,遍历它并使用JSonValue.ToString检索字符串值

数据使用VarChar字段存储在DBIsam中


您知道如何检测和防止出现“坏”字符或在其他地方发生这种情况吗?

65533是
U+FFFD替换字符
,这意味着数据使用不支持被替换的原始Unicode码点的字符集进行字符集转换。但U+FFFD究竟从何而来?在调用
parseJsonValue()
之前,它是否已经存在于
s
中,或者它是否存在于您正在遍历的结果树中?如果是前者,则再次检查REST逻辑是否正确地处理了从套接字到解析器的JSON字符串数据。我猜想,从REST套接字读取数据时,可能会丢失数据,例如JSON是UTF-8编码的(这是JSON的默认字符集)但是,在将原始字节转换为
字符串时,不能将其视为UTF-8。