【问题标题】:Kotlin to SAP HANA char setKotlin 到 SAP HANA 字符集
【发布时间】:2018-10-09 10:00:37
【问题描述】:

我在 JVM 1.8 上的 Tomcat 8.5 上运行 Spring Boot Kotlin 应用程序并连接到 SAP HANA。我使用JdbcTemplate.batchUpdate(<string query>) 将数据插入到表中。

我必须处理德语字母,这会带来一些麻烦。当我尝试使用 SAP HANA Studio 写入数据时,写入了正确版本的字符串 - 例如,Qualität 正确写入为Qualität。当我使用JdbcTemplate.batchUpdate 时,Qualität 被导出为Qualit�t

如何强制 JVM/Kotlin/JDBCTemplate 使用默认字符集以外的字符集?或者有其他方法可以解决这个问题吗?

我目前的解决方法是将这些字符替换为其拼音版本(äae),但我想避免这样做。

【问题讨论】:

  • JDBC 使用 UTF 处理映射到 HANA 的字符串存储的字符串。 HANA/JDBC 中没有字符集映射,因此问题在于显示结果或在将数据插入 HANA 之前发生的任何事情。 Kotlin/JDBCtemplate 是否执行任何数据转换,即如果列定义不是NCHAR/NVARCHAR,则将字符剪切为ASCII?
  • @LarsBr。列定义是 NVARCHAR 并且应该是 Unicode 编码。我不会说 Kotlin 或 JdbcTemplate 对那个字符串有一些魔力......但我会尝试将查询(在它执行之前)放入日志并报告结果。
  • @LarsBr。我尝试将查询放入日志文件,结果是查询在执行之前已经变形,因此JDBC和SAP HANA之间没有问题。经过一些试验和错误,我们发现这是由于发送这些字符的客户端网络格式不正确造成的。
  • 感谢@Delfi 的更新。对我来说,令人惊讶的是,检测错误的 TCP 网络连接实际上会允许接收到乱码。我怀疑数据的混乱是在实际放入 TCP 数据包之前发生的——这表明发送系统存在问题。

标签: kotlin jvm sap hana


【解决方案1】:

只是为了关闭这个——经过一番调查,我们发现这不是 SAP Hana 和 Hibernate 之间的问题,而是在测试级别上,由 Mozilla Firefox 引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多