Oracle 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
{"code":40001,"message":"系统内部错误: Error attempting to get column 'COUNT(1)' from result set.  Cause: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK\n; uncategorized SQLException; SQL state [99999]; error code [17056]; 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK; nested exception is java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK","data":null}
Oracle 字符集错误分析及解决方案
错误原因
这个错误表明您的应用程序在尝试与 Oracle 数据库交互时遇到了字符集问题,具体是 ZHS16GBK 字符集不被支持。错误信息明确指出:
- 系统尝试从结果集中获取 'COUNT(1)' 列时失败
- 根本原因是 Java 应用程序不支持 ZHS16GBK 字符集
- 建议解决方案是在类路径中添加 orai18n.jar 文件
解决方案
1. 添加 orai18n.jar 到类路径
这是最直接的解决方案。orai18n.jar 是 Oracle 提供的国际化支持库,包含了对多种字符集(包括 ZHS16GBK)的支持。
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
    <groupId>com.oracle.database.nls</groupId>
    <artifactId>orai18n</artifactId>
</dependency>
2. 其他可能的解决方案
如果添加 orai18n.jar 后问题仍然存在,可以尝试以下方法:
设置 NLS_LANG 环境变量
在客户端设置 NLS_LANG 环境变量以匹配数据库字符集:
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
修改连接字符串
在 JDBC 连接字符串中显式指定字符集:
jdbc:oracle:thin:@host:port:SID?useUnicode=true&characterEncoding=ZHS16GBK
检查数据库字符集
确认数据库实际使用的字符集:
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';
预防措施
- 确保开发、测试和生产环境使用相同的字符集配置
- 在应用程序中统一使用 UTF-8 编码,并在与数据库交互时进行必要的转换
- 文档化环境依赖项(如 orai18n.jar 的需求)
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/18843266
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号