登陆Oracle数据库,这里用SecureCRT,很好用的一个SSH连接工具:
//切换到oracle
su - oracle

//登录sqlplus    
sqlplus /nolog

//连接orcale  
conn xx/xx;(用户名/密码)或者connect /as sysdba;

我们先执行这样一个脚本,创建一个简单的表:

CREATE TABLE test_gu (
id VARCHAR2(50) DEFAULT NULL,
name VARCHAR2(80) DEFAULT NULL ,
age VARCHAR2(50) DEFAULT '0'
)

然后插入几条数据,注意,是生僻字:

INSERT INTO test_gu VALUES (1, '李䶮', '18');
INSERT INTO test_gu VALUES (2, '李㛃', '19');
INSERT INTO test_gu VALUES (3, '李宁', '20');
INSERT INTO test_gu VALUES (4, '李安', '21');

执行语句:
select * from test_gu发现显示乱码,中文都变成了??,查看服务器端的编码,执行:

select userenv('language') from dual;结果显示:
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

可以看到,Oracle字符集编码是AL32UTF8,所以不支持中文显示,如果要能够显示中文,那么需要我们修改其字符集为CHINESE_CHINA.ZHS16GBK,这个网上有很多解决办法。其实我们不更改编码集也可以,因为这不影响我们程序正常的增删改查,而且如果要查看Oracle数据库,我们可以选择客户端工具:
1、Navicat Premium客户端工具
提取链接: https://pan.baidu.com/s/12_kU6h3fkpbA5kBgMB_0_A 提取码: 2i6e
下载该软件,解压即可使用(免安装),连接Oracle的时候,需要增加这一个操作:工具>选项>OCI>OCI library(oci.dll) 引入oci.dll文件,该文件在解压目录:Navicat Premium\instantclient_10_2文件夹内。

2、PLSQL Developer客户端工具

使用客户端工具的过程中,我发现一个问题,使用navicat查询,显示不乱码:

但是使用Developer工具,只是字乱码,而且不是?,很奇怪有木有:

我把查询结果复制到txt文本,结果就成了这样:

1    李?  18
2   李?  19
3   李宁  20
4   李安  21

看到这,真的有点哭笑不得,某些输入法无法打出这种生僻字,这种生僻字个人大都百度先查该字念什么,然后百度复制到txt文档,另存为的时候采用UTF-8编码,这样的文本复制到其他地方打开,同样能够正常显示。所以,使用Developer复制出来的文本,就跟该客户端采用的字符集编码有关了。那么,如何查看该客户端采用什么字符集编码呢?执行如下SQL:

select * from nls_instance_parameters where parameter='NLS_LANGUAGE';//结果如下
PARAMETER       VALUE
NLS_LANGUAGE    AMERICAN

然后把该句拿到Navicat客户端执行,结果是一样的,可是为什么两者显示有如此大区别呢?而且navicat复制出来的结果,粘贴到txt,能正常显示,不过要采用UTF8编码另存:

我们都知道,某些中文生僻字,是没有ANSI码的,我们只能用Unicode编码工具,找到该中文对应的Unicode码进行存储,读取时候再对该Unicode进行转码即可。针对这两客户端显示不一致的问题,暂时还没找到原因,找到原因再更吧。。。

Oracle存储中文生僻字:Navicat客户端不乱码而Developer显示乱码相关推荐

  1. GBase8s数据库支持中文生僻字注意事项

    GBase8s数据库支持中文生僻字 注意事项 将数据导入到GBase8s数据库中,我们会进行建库.建表.建字段的操作,当这些操作完成以后在初期导入一些测试或样例数据的时候都比较顺利.但有时到了正式环境 ...

  2. LaTeX中文生僻字显示

    LaTeX中文生僻字显示 在处理"旻"这个字的时候,TexLive 2021+XeLaTeX编译成功但是字无法正常显示. 于是网上搜索,得到以下解决方法 \usepackage{c ...

  3. pdflib:使用pdflib输出中文生僻字和繁体字乱码问题

    使用pdflib输出中文生僻字和繁体字乱码问题. 添加中文字体语句,如下: pdf->obj[2+i].offset = pdf->offset; length = LPDF_SPRINT ...

  4. Windows系统对中文生僻字支持问题的解决办法

    Windows系统对中文生僻字支持问题的解决办法 1.Windows API对GB18030-2000 的支持下列 Windows API 提供对GB18030-2000 的支持. IsValidCo ...

  5. sqlserver中文生僻字乱码问题

    sqlserver中文生僻字乱码问题解决 场景:前端输入生僻字,e.g. 㙍.㮾,存入到数据库为乱码(㙍/-). 解决:修改会存生僻字的字段(一般地址字段)的数据类型为nvarchar,在插入或更新s ...

  6. 2020-01-08 Oracle 数据库储存生僻字

    在运维过程中发现了生僻字的存储和传输.生僻字的主要来源是人员姓名,传输过程中定义了生僻字的单独的特殊传输方式,但是在存储时运维人员并不能很明确的明确字体是生僻字,现就生僻字存储的方式找到以下解决方案, ...

  7. 数据库存储解决生僻字

    一.Oracle数据库 就一般情况来说,Oracle存储中英文的字段用varchar2类型就可以了,但有些时候,遇到生僻字就不行了, 在默认字符集环境下,实现Oracle储存生僻字: 㛃.䶮-(使用n ...

  8. TCPDF中文生僻字解决方案

    根据网上方法中文乱码解决 但是出现生僻字还是乱码 官网下载最新包 创建个新文件 代码如下 <?php require_once('tcpdf.php'); $pdf = new TCPDF(); ...

  9. Java中文生僻字排序

    JDK中的java.text.Collator 排序处理生僻字会失败,现引入新的Jar包进行处理. 引入icu4j进行处理,改包主要是为软件应用提供Unicode和全球化支持的一套成熟.广泛使用的C/ ...

最新文章

  1. Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)
  2. python spark 求解最大 最小 平均
  3. 【洛谷P3369】普通平衡树(splay)
  4. 如何保护 SpringBoot 配置文件中的敏感信息
  5. matlab gui设计实例_S-Funciton应用实例
  6. android世界时钟代码大全,世界时钟精美时钟代码
  7. 常见的正则表达式验证(更新中)
  8. Why docker command need sudo? | 为什么运行docker命令需要sudo?
  9. android选择头像弹窗,Android App开发常用功能之用户头像选择-Go语言中文社区
  10. 数据结构图文解析之:哈夫曼树与哈夫曼编码详解及C++模板实现
  11. 树莓派输出pwm波c语言,树莓派Ubuntu18.04使用pigpio库产生PWM波实现舵机控制
  12. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门
  13. 再谈子网划分方法与子网划分示例
  14. 【Zigbee】进阶篇(2) Zigbee协议栈中OSAL的执行流程
  15. Centos7 Redhat7使用
  16. 浅谈切比雪夫多项式推导及其实现模版归类
  17. selenium模拟鼠标滑动
  18. python设置桌面歌词_Python生成歌词词云
  19. Word页码从当前页自增
  20. python迅雷下载任务出错_迅雷下载时提示“任务出错”怎么办?小编教你(附多种解决方法)...

热门文章

  1. ubuntu 12.04 64位 安装qq
  2. php+python+java+c+html5+css3等各类IT视频教程合集500T
  3. 让三维扫描3D打印走进生活
  4. Concis组件库封装——Badge徽标
  5. 编译器大神 Chris Lattner 官宣新编程语言:Mojo,比 Python 快 35000 倍!
  6. Java调用DLL对海关申报数据加签
  7. CSS 字体拉伸 font-stretch属性
  8. 面对对象第二章课后作业
  9. 基于matlab/simulink环境下空调房间仿真模型的建立,基于Matlab_Simulink环境下空调房间仿真模型的建立.pdf...
  10. koa工程化项目使用的基本包