【发布时间】:2021-04-19 08:48:33
【问题描述】:
问题: 丹麦语特定字符显示不正确(作为不可读的字符)
鉴于:
数据库为Microsoft SQL server 2019,数据库排序规则为:Danish_Greenlandic_100_CS_AS。数据已经存储在 Varchar 列类型中,数据已经存在;更改排序规则或任何数据修改不合适。我没有插入数据,只是读取它们(一种报告功能)。
在我的本地机器上一切正常,但是在暂存环境中丹麦字符编码不正确。
连接初始化sn-p
Properties props = new Properties();
props.put ("charSet", "UTF-8");
props.put("username", "dbusername");
props.put("password", "secret");
try (Connection con = getConnection(repositoryUrl, props);
PreparedStatement preparedStatement = con.prepareStatement(sqlQuery)
) {
读取数据sn-p:
ResultSet rs = //getResultSet
while (rs.next()) {
Map<String, String> rowEntry = new LinkedHashMap<>();
for (int i =0; i < columnCount; i++ ) {
int columnIndex = i+1;
String value = rs.getString(columnIndex);
rowEntry.put(columnName, value);
}
result.add(rowEntry);
}
【问题讨论】:
-
我的 猜测 问题在于您使用什么语言来插入数据,而不是数据库(因为在使用该排序规则时插入这些字符可以正常工作) .您也应该在此处标记应用程序的语言。
-
谢谢,很好,应用程序是用java编写的。数据已被其他应用插入,用户区域设置为 da_DK
-
您使用什么操作系统?默认的字符编码是什么?在开发和生产环境中。
-
开发环境:我使用的是 MacOS,SQL Server 安装为 Docker Image。暂存:app\SQL 服务器正在 Windows 上运行。 Java版本:openjdk版本“1.8.0_275”
-
请注意您在 MacOS (
UTF-8) 和 Windows (cp-1252或某些变体) 中使用的 JVM 的不同默认字符集:我意识到您指出了字符集 @987654327 @ 在您的连接属性中,但问题可能与某种后处理有关(文件输出,...)
标签: java sql-server jdbc mssql-jdbc