resultSet 字符串中的控制字符

Control characters in resultSet string

我们在 Postgres 的文本列中有一个正确且干净的 json 字符串, 此字符串是一种很少更改的配置数据。

json 字符串是通过 jdbi 查询从 Wildfly 上的 Web 应用程序中的 java 代码 运行 中获取的。

仅在 linux 系统 上,我们在从结果集中读取字符串时遇到控制字符 (?)(使用 getString("param_value") ). Here 从结果集中读取后保存的 json 文本。

有什么建议吗?

我不知道为什么会发生这种情况,但我已经在单元测试中测试了代码,在应用程序服务器环境中获得了相同的结果(windows ok,linux ko)。此外,升级 postgres jdbc 驱动程序和 jdbi 驱动程序后没有任何变化。

作为避免在解析 json 时出现问题的变通方法,执行控制字符的字符串替换:

String jsonString = resultSet.getString("param_value")
                      .replaceAll("[\x00-\x1F\‌​\x7F\x0A\xfffd\x2‌​0a]","");

控制字符序列最初取自this post,然后根据json解析异常消息进行扩展。