有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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);
        }

共 (1) 个答案

  1. # 1 楼答案

    问题可能与在MacOS(默认情况下,UTF-8)、本地笔记本电脑和登台环境中的Windows(cp-1252或某些变体)中使用不同的字符集有关

    尽管在连接属性中指出了字符集UTF-8,但问题可能与某种后处理有关

    事实上,如问题注释所示,服务器响应和日志文件都是上述字符集问题的典型示例

    请在每个环境中查看JVM中的字符集:查看并在必要时调整笔记本电脑和登台环境中file.encoding系统属性的值,也许它会让您了解问题并帮助您解决问题

    因此,为了解决问题,请在运行应用程序时尝试添加file.encodingJVM参数:

    java -Dfile.encoding=UTF=8 -jar your_app.jar