Oracle 数据库中文乱码的解释和更改


date: 2019-06-25 09:29
status: draft
title: ‘Oracle 数据库中文乱码的解释和更改’

涉及三个字符集的是否兼容的问题

  1. 操作系统的字符集
  2. 客户端的字符集
  3. 数据库的字符集(数据库服务器端的的字符集)

操作系统的字符集设置

  1. 如果是Windows 系统的计算机,基本不用考虑操作系统的字符集,按照本人理基本都会支持Windows 系统
  2. Linux 系统,(稍后进行补充)

客户端的字符集的设置

这个是客户端自己设置的字符集,代表安装Oracle 的时候的个性化设置。
对应的参数是NLS_LANG,如果客户端未设置,此时则取的是安装时数据库的默认参数。

数据库的字符集设置

安装数据库的时候,进行配置的字符集设置
如果没有设置为ZHS16GBK(这个是允许中文输入的和UTF-8存储方式一样) ,听说有的还是Al32UTF-8 (这个同样也是UTF-8) 的一种存储格式

解决乱码问题:

  1. 查看数据库的字符集
    通过SQL plus 进入system用户
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

在这里插入图片描述

查看数据库的字符集
如果是ZHS16GBK 或者 Al32UTF-8都可以,如果不是进行修改
将数据库环境字符集换为ZHS16GBK

  • 首先以sysdba的身份登录上去 conn /as sysdba
conn system/password;
  • 关闭数据库
shutdown immediate;
  • 以mount打来数据库,
startup mount
  • 设置session
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
  • 启动数据库
alter database open;
  • 修改字符集
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
  • 关闭,重新启动
shutdown immediate;
startup
  1. 更改客户端字符集
    如果乱码了就设置客户端编码格式
    计算机(右键) —>属性—>高级系统设置—>高级—>环境变量—>新建,个人建议新建用户变量,变量名输入:“NLS_LANG”,变量值输入:“SIMPLIFIEDCHINESE_CHINA.ZHS16GBK”。点击确定即可,到此我们就设置完了。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值