如何解决JDBC:呈现丹麦特定字符的问题:Ø、Å、Æ
问题: 丹麦语特定字符显示不正确(作为不可读的字符)
给定:
数据库为 Microsoft SQL server 2019
,数据库排序规则为:Danish_Greenlandic_100_CS_AS
。数据已经存储在Varchar列类型中,数据已经存在;更改整理或任何数据修改都是不合适的。我没有插入数据,只是读取它们(一种报告功能)。
在我的本地机器上一切正常,但是在登台环境中丹麦语字符编码不正确。
连接初始化片段
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)
) {
读取数据片段:
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);
}
解决方法
该问题可能与在 MacOS(默认为 UTF-8
)、本地笔记本电脑和 Windows(cp-1252
或某些变体)的暂存环境中使用不同的字符集有关.
尽管您在连接属性中指明了字符集 UTF-8,但问题可能与某种后期处理有关。
事实上,正如问题评论中所指出的,服务器响应和日志文件都是上述字符集问题的典型示例。
请检查每个环境中 JVM 中的字符集:检查并在必要时调整您笔记本电脑和暂存环境上 file.encoding
系统属性的值,也许它会给您一些见解并帮助您解决问题。
因此,为了解决您的问题,请尝试在运行应用程序时添加 file.encoding
JVM 参数:
java -Dfile.encoding=UTF=8 -jar your_app.jar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。