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

案例描述:在默认字符集环境下,实现Oracle储存生僻字: 㛃、䶮.....(使用nvarchar2字段类型实现,以“㛃”为代表进行测试)。

1.查看当前使用的字符集 。

select userenv('language') from dual;

一般来说,在安装Oracle数据库的时候,字符集设置选择的是使用默认值,也就是 ZHS16GBK(字符集)

2.建立测试表。

create table TEST
(
SNAME VARCHAR2(50),
TNAME NVARCHAR2(50)
)

varchar2  跟 nvarchar2 区别不大,但是在存放中文的时候,nvarchar2会比varchar2多一点。

3.插入测试数据。

正常的插入方式测试,这两种类型都行不通了。然而,我们可以换一下插入方法。

首先,把生僻字转换为Unicode。在线转换链接http://www.bejson.com/convert/unicode_chinese/

"㛃" 转为Unicode为 "\u36c3"(注意: \u 是Unicode的转义字符,使用的时候要去掉)

然后,从dual中查询结果:

select utl_raw.cast_to_nvarchar2('36c3') from dual;

实质上,在nvarchar2才存储了“㛃”字。

最后,再一次进行插入数据:

insert  into  test(sname,Tname)  values((select utl_raw.cast_to_nvarchar2('36c3') from dual ),(select utl_raw.cast_to_nvarchar2('36c3') from dual));

commit;

nvarchar2类型的TNAME成功插入了生僻字“㛃”。

4.主要说明。

 

虽然说这个问题一般在很小的项目下不会经常遇到,但是还是有它存在的意义的。说不定录入数据的时候,姓名会带有生僻字,然后惊奇发现数据变成 ? 了,然后,百度谷歌一找,各有各的说法,各有各的方案,然而...实用的?凉凉。以上方式是代价最小的可行的方案,通过更改数据库的字符集也可以实现,但是这种方式工作量成本过高,出现差错的恢复难度太大,不建议使用(除非项目建立初期的规划考虑周到,囊括所有编码问题还会有风险。)

2020-01-08 Oracle 数据库储存生僻字相关推荐

  1. Oracle 储存生僻字

    Hi ~ 小老弟开始转公众号啦,欢迎大家来指点迷津呀 就一般情况来说,Oracle存储中英文的字段用varchar2类型就可以了,但有些时候,遇到生僻字就不行了. 需求描述: 在默认字符集环境下,实现 ...

  2. 生僻字存不到mysql_数据库存储生僻字存在的问题

    最近遇到两个比较棘手的事情,都是同一种状况:数据库储存不了带有生僻字的客户名. 一个是"?",另外一个是"?",只能是感叹汉语真是博大精深啊.SR向原厂的工程师 ...

  3. Oracle存储中文生僻字:Navicat客户端不乱码而Developer显示乱码

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

  4. mysql数据库存储生僻字_mysql 生僻字存储

    @皮总 @红薯###### 第一问:使用mysqlimport导入数据.最好不要使用insert into. 第二问:如果存储是{char(15), unsigned tinyint }, Utf8( ...

  5. 企业实战01:Oracle数据库概述

    Oracle数据库专栏 文章目录 1 用户与表空间 1.1 用户 1.2 表空间 2 表与约束 2.1 表 2.2 约束在表中的作用 3 约束种类 4 查询语句 4.1 查询的作用 1 用户与表空间 ...

  6. oracle字符集增加生僻字,Oracle SQL一个“生僻字”的优化

    SQL优化的内容浩如烟海,今天给大家分享其中的冰山一角,带大家了解一下关于索引和直方图的不常见问题. 现    象 提到Oracle的SQL优化,是不是脑海最先飘来三个字:建索引.诚然,建索引常见,建 ...

  7. Oracle 生僻字乱码问题

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

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

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

  9. oracle加入生僻字,ORACLE数据库中如何插入生僻字

    ORACLE数据库中如何插入生僻字 发布时间:2020-08-16 23:44:09 来源:ITPUB博客 阅读:184 作者:巡完南山巡南山 本文转自oracle官方博客, 很多客户的数据库的字符集 ...

最新文章

  1. Keep the Customer Satisfied
  2. soj1209- 最短的距离(精度问题)
  3. Python的位置参数、默认参数、关键字参数、可变参数之间的区别
  4. 卷积的物理意义(经典)
  5. node.js的下载,安装以及卸载
  6. VMware使两台windows虚拟机能够互相ping通
  7. RS(1)--10分钟了解什么是推荐系统
  8. java checkproperties(this)_【转载】java读取.properties配置文件的几种方法
  9. 微软首款 Office 应用程序登陆 Linux
  10. Linux桌面没有minidwep,ubuntu安装minidwep-gtk
  11. MongoDB课堂笔记
  12. Pascal 英语句子语法解析器
  13. 转:德鲁克:放弃昨天,是变革的第一原则
  14. java 导出压缩文件,里面文件名字乱码的问题(麒麟系统,linux)
  15. 【转】几种小波阈值去噪程序
  16. selenium无登录状态爬取Boss直聘
  17. android gridview 行高设置
  18. 2.Maven创建以及依赖、继承、聚合
  19. 曝孙杨已获驾照 曾无证驾车载年轻女子肇事
  20. [附源码]计算机毕业设计Python+uniapp家政服务系统小程序7na26(程序+lw+远程部署)

热门文章

  1. yapi接口导出为word_还在手工写接口测试文档,已经out了
  2. linux 看硬件配置 命令2
  3. java文件中public 类名要和文件名保持一致以及其他细节
  4. 密码学基础(二)单表---置换密码 凯撒密码 棋盘密码 乘法密码 仿射密码 多表---vigenere方阵
  5. linux如何添加360网站卫士ip,使用加速乐、360网站卫士PHP无法获取用户IP的解决方法...
  6. python计算利率贷款_用Python获取银行网站上的存贷款利率表
  7. Visual Studio 2017、2019 无法启动的解决方法
  8. 常见的网络连接设备有哪些?
  9. linux网桥的简单理解和配置
  10. 前端性能优化 - chrome performance看浏览器渲染过程