当前位置: 首页 > news >正文

Oracle中文显示???????解决办法

项目场景:

Oracleoracle中文显示???解决办法

问题描述

在这里插入图片描述

原因分析:

Oracle中文显示???通常是由于字符集不匹配或者编码问题导致的。当数据库中的数据使用的是某种字符集,而客户端或者应用程序使用的是另一种字符集时,就会出现中文显示乱码的情况。

另外,如果数据库中的数据本身就是损坏的或者不完整的,也有可能导致中文显示乱码的问题。

总的来说,中文显示乱码的原因主要包括字符集不匹配、编码问题、数据损坏等。


解决方案:

1、不同解决思路

  1. 修改NLS_LANG环境变量:将NLS_LANG环境变量设置为正确的字符集,例如:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。

  2. 修改Oracle客户端的字符集:在Oracle客户端中,可以通过修改NLS_LANG参数来设置字符集,例如:ALTER SESSION SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。

  3. 修改数据库的字符集:如果数据库的字符集不是UTF-8或者GBK,可以考虑修改数据库的字符集。

  4. 使用Unicode字符集:Unicode字符集支持多种语言,包括中文,可以解决中文乱码问题。

  5. 使用Java程序连接Oracle:如果使用Java程序连接Oracle,可以在连接Oracle时指定字符集,例如:jdbc:oracle:thin:@localhost:1521:orcl?useUnicode=true&characterEncoding=UTF-8。

  6. 使用PL/SQL Developer等工具:一些Oracle数据库管理工具支持中文显示,例如PL/SQL Developer,可以在工具的设置中修改字符集。

2、具体解决过程

  1. 查看数据库字符集select userenv('language') from dual;

    SQL> select userenv('language') from dual;USERENV('LANGUAGE')
    ----------------------------------------------------
    AMERICAN_AMERICA.ZHS16GBKSQL> 
    
  2. 查询系统字符集locale

    [oracle@localhost ~]$ locale
    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    [oracle@localhost ~]$ 
    
  3. 将数据库字符集修改为与系统字符集一致(也可修改系统字符集与数据库字符集一致)

    SQL> shutdown immediate
    SQL> startup nomount
    SQL> alter database mount exclusive;           //装载数据为专用的高级模式;
    SQL> alter system enable restricted session;   //启用受限制的session模式
    SQL> alter system set job_queue_processes=0;   //'maximum number of job queue slave processes' 设置工作队列的最大进程数为0
    SQL> alter system set aq_tm_processes=0;
    SQL> alter database open;
    SQL> alter database character set internal_use utf8;;  // 设置为自己所需字符集即可
    SQL> shutdown immediate
    SQL> startup
    

    注意:已经存在的数据,在修改了字符集之后还是会显示为乱码,只有新插入的数值才会生效

相关文章:

  • 为什么 Flink 抛弃了 Scala
  • 2023年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题
  • C++:一文读懂智能指针
  • js修改浏览器地址栏里url的方法
  • python -opencv 中值滤波 ,均值滤波,高斯滤波实战
  • 汽车电子 -- 根据DBC解析CAN报文
  • 电力感知边缘计算网关产品设计方案-网关系统通信架构方案
  • 生产环境出现问题,测试人如何做工作复盘?
  • 最重要的BI测试-适用于任何BI和分析平台
  • 看完就会,从抓包到接口测试的全过程解析【1500字保姆级教程】
  • 2023亚太地区数学建模C题思路分析+模型+代码+论文
  • Excel换不了行怎么解决?
  • 蓝桥杯物联网竞赛_STM32L071_2_继电器控制
  • Django框架之中间件
  • 自动化测试中几种常见验证码的处理方式及如何实现?
  • ES6之路之模块详解
  • Flannel解读
  • golang 发送GET和POST示例
  • httpie使用详解
  • idea + plantuml 画流程图
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS实现简单的MVC模式开发小游戏
  • maven工程打包jar以及java jar命令的classpath使用
  • Node 版本管理
  • QQ浏览器x5内核的兼容性问题
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SpingCloudBus整合RabbitMQ
  • yii2中session跨域名的问题
  • 闭包--闭包作用之保存(一)
  • 从重复到重用
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 老板让我十分钟上手nx-admin
  • 聊一聊前端的监控
  • 区块链共识机制优缺点对比都是什么
  • 实现简单的正则表达式引擎
  • 使用SAX解析XML
  • 详解移动APP与web APP的区别
  • 阿里云ACE认证学习知识点梳理
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.ajax中的eval及dataType
  • $GOPATH/go.mod exists but should not goland
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (day 12)JavaScript学习笔记(数组3)
  • (HAL库版)freeRTOS移植STMF103
  • (Java数据结构)ArrayList
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二)WCF的Binding模型
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (接口封装)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目