You need to enable JavaScript to run this app. 如何通过JDBC驱动连接名称含重音字符的SQL Server?
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JDBC驱动连接名称含重音字符的SQL Server?

解决方案

问题根源:useUnicode、characterEncoding两个参数仅作用于JDBC和SQL Server交互阶段的字符集处理,不影响主机名解析环节的编码逻辑,你遇到的乱码是Java底层解析带重音的主机名时,默认使用了非UTF-8编码导致的。

可按以下优先级排查解决:

  • 方案1(最简便,无需修改服务端和启动参数):修改本地hosts文件做别名映射
    1. 用管理员权限打开Windows系统的hosts文件,路径为C:\Windows\System32\drivers\etc\hosts
    2. 新增一行配置:127.0.0.1 sql-local(别名可自定义,不要带特殊字符即可)
    3. 修改application.properties中的JDBC URL,把FLÉK替换为你自定义的别名即可:
      spring.datasource.url=jdbc:sqlserver://sql-local\MSSQLSERVER02;databasename=MyDatabase;integratedSecurity=true;
      
  • 方案2:给Java应用添加JVM编码参数
    启动应用时添加两个VM参数,指定系统层面解析字符用UTF-8:
    -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
    
    如果是IDEA本地启动,可在对应运行配置的「VM options」栏填写上述参数;如果是jar包部署,启动命令修改为:
    java -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -jar 你的应用包名.jar
    
  • 方案3:直接用IP替代主机名
    因为是本地部署的SQL Server,直接把主机名替换为127.0.0.1即可完全避开主机名编码解析问题:
    spring.datasource.url=jdbc:sqlserver://127.0.0.1\MSSQLSERVER02;databasename=MyDatabase;integratedSecurity=true;
    

注意:如果使用Windows身份验证,需确保对应版本的sqljdbc_auth.dll已经放在JDK的bin目录或者系统PATH路径下,避免后续出现身份验证相关报错。

内容的提问来源于stack exchange,提问作者Lois2B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:36:03