tayunjici 2023-12-18 10:52 采纳率: 0%
浏览 43
已结题

java连接Oracle读取数据返回中文乱码问题

mybatis-plus配置双数据源后,解决Oracle中文乱码的配置失效了,怎么办。

  datasource:
    dynamic:
      primary: master
      strict: false
      druid:
        db-type: com.alibaba.druid.pool.DruidDataSource
        connection-properties: serverEncoding=ISO-8859-1;clientEncoding=GBK;
      datasource:        
        master:
          url: jdbc:wrap-jdbc:filters=encoding:jdbc:oracle:thin:@192.168.6.100:1521/oracl
          username: zhaobn
          password: zbh
          driver-class-name: oracle.jdbc.driver.OracleDriver
          type: com.alibaba.druid.pool.DruidDataSource
        work:
          url: jdbc:wrap-jdbc:filters=encoding:jdbc:oracle:thin:@192.168.6.101:1521/oracl
          username: zhaobn
          password: zbh
          driver-class-name: oracle.jdbc.driver.OracleDriver

  • 写回答

16条回答 默认 最新

  • 呈两面包夹芝士 2023-12-18 14:33
    关注
    获得0.45元问题酬金

    引自讯飞星火
    在mybatis-plus配置双数据源后,如果遇到Oracle中文乱码的问题,可以尝试以下方法解决:

    1. 修改数据库连接的字符集为UTF-8。在创建Oracle数据库时,可以设置字符集为UTF-8。例如:
    CREATE DATABASE your_database_name CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
    
    1. 修改MyBatis-Plus的配置文件(如application.yml或application.properties),将spring.datasource.druid.connection-properties中的serverEncodingclientEncoding的值都改为UTF-8
    spring:
      datasource:
        dynamic:
          primary: master
          strict: false
          druid:
            db-type: com.alibaba.druid.pool.DruidDataSource
            connection-properties: serverEncoding=UTF-8;clientEncoding=UTF-8;
          datasource:        
            master:
              url: jdbc:wrap-jdbc:filters=encoding:jdbc:oracle:thin:@192.168.6.100:1521/oracl
              username: zhaobn
              password: zbh
              driver-class-name: oracle.jdbc.driver.OracleDriver
              type: com.alibaba.druid.pool.DruidDataSource
            work:
              url: jdbc:wrap-jdbc:filters=encoding:jdbc:oracle:thin:@192.168.6.101:1521/oracl
              username: zhaobn
              password: zbh
              driver-class-name: oracle.jdbc.driver.OracleDriver
    
    1. 如果问题仍然存在,可以尝试在查询语句中使用NLS_LANG参数来指定字符集。例如:
    SELECT * FROM your_table_name WHERE your_column_name = NLS_LANG('SIMPLIFIED CHINESE_CHINA.ZHS16GBK');
    

    希望以上方法能帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据