-- 请参考: -- 3.8 “靠”字的困惑 ( P109 ) ...... -- *(1) 客户端应用字符集(Client Application Character Set)。测试客户端应用使用命令行工具(cmd.exe), -- 这个工具的字符集决定查询结果在终端上的输出显示,当前命令行工具的字符代码页为936,对应的是GBK字符集,如图3-11所示。 D:\ > cmdD:\ > chcp -- *(2) 客户端NLS_LANG参数设置。为了测试异常情况,设置NLS_LANG为AMERICAN_AMERICA.WE8ISO8859P1: D:\ > set NLS_LANG = AMERICAN_AMERICA.WE8ISO8859P1 -- *(3) 服务器端,数据库字符集(Character Set)设置。其数据库的字符集为ZHS16GBK。 -- 首先在数据库上创建一个测试表,存储一点中文数据: SQL > create table tcharset (name varchar2 ( 40 ));SQL > insert into tcharset values ( ' 循序渐进深入浅出 ' ); -- 然后在客户端WE8ISO8859P1字符集下执行查询: D:\ > set NLS_LANG = AMERICAN_AMERICA.WE8ISO8859P1D:\ > sqlplus eygle / eygle @eygle ......scott @SZTYORA > select * from tcharset;NAME -- -------------------------------------- 靠靠靠靠 -- 现在我们看到8个汉字被转换成4个“靠”字输出显示?这是怎么回事呢? -- 我们知道,Oracle 数据库服务器是传输代码给客户端的,数据本身不存在问题,编码会原样传输到客户段: SQL > select name, dump (name) from tcharset;NAME DUMP (NAME) -- ---------- ------------------------------------------------------------------------------------------------------------- 靠靠靠靠 Typ = 1 Len = 24 : 229 , 190 , 170 , 229 , 186 , 143 , 230 , 184 , 144 , 232 , 191 , 155 , 230 , 183 , 177 , 229 , 133 , 165 , 230 , 181 , 133 , 229 , 135 , 186 -- 那么可以确认存在问题的只是中间发生的转换环节。由于WE8ISO8859P1是8位的单Byte编码方案,所以中文汉字编码在其中不存在对应关系, -- 也就是无法转换,此时WE8ISO8859P1字符集会使用一个替换字符来代替中文,这个替换字符是“ ”,也就是一个倒过来的“?”,不同字符集的替换字符, -- 我们可以通过Locale Builder工具打开字符文件查看,如图3-12所示。 ...... -- 注意这个特殊字符的编码为BF,那么也就是说,如果无法转换ZHS16GBK的8个中文字,WE8ISO8859P1将使用8个“ ”来替换,也就是说经过替换之后, -- 我们有了8个BF的编码,那么我们再来看看8个BF在客户端的GBK字符集里代表了什么: -- 通过微软网站上的936代码页我们可以找到如图3-13所示的图表。 ...... -- 提示 -- 936代码页的网址链接为 http://www.microsoft.com/globaldev/reference/dbcs/936.htm 。 -- 从图3-13中可以看到,其中BFBF正好代表汉字“靠”,于是8个BF最后展现出来就变成了4个“靠”字。 -- 也就可以通过ZHS16GBK字符集文件来找到这个编码,再者是一致的,如图3-14所示。 ...... -- 这也就是不同字符集、应用之间转换导致的字符集问题。

oracle“靠”字的困惑相关推荐

  1. Oracle 生僻字乱码问题

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

  2. oracle 生僻字 转码,Oracle 生僻字乱码解决方案

    Oracle生僻字乱码解决方案 ""(此+夕)[suǒ]字乱码,无法正常显示(变成问号); 生僻字""(此+夕)(suo)在ZHS16GBK字符集下默认无法正常 ...

  3. 解决Oracle存储生僻字、oracle生僻字,oracle偏僻字、数据库生僻字,数据库偏僻字

    处理前,乱码,如下图所示 通过以下方法处理: -- 解决Oracle存储生僻字.oracle生僻字,oracle偏僻字.数据库生僻字,数据库偏僻字 -- 只能保证业务系统能正常读取生僻字-- 第一步: ...

  4. pl/sql developer oracle生僻字显示问题

    一.问题由来        随着国标GB18030的推行,各行各业都在如火如荼的落实改造.自己在工作中也发现很多问题,查阅了很多资料都未解决自己的问题.经过慢慢摸索,对生僻字经常出现的问题进行总结,现 ...

  5. oracle生僻字解决方案

    1.先登陆用户查看当前字符集 select userenv('language') from dual; 2.建立测试表.设置2个字段:分别为varchar2和nvarchar2 nvarchar2会 ...

  6. oracle 截取字指定的字符串

    过滤指定的字符串,一字符串有重复的数据内容,所以需要去掉重复的内容,subst()截取 起止下标;instr()获取终止下标位置 例如:substr(p.address, 0, instr(p.add ...

  7. ORACLE 查询字表未明确定义列

    运行环境:Oracle10g sqlplus环境下.  在查询语句中,经常会出现一个错误:  SQL基础:ORA-00918:未明确定义列的错误. 当前遇到有两种情况.原因为:当查询语句中,查询的表( ...

  8. 以太坊Oracle系列一: Human Oracle

    智能合約如何取得外界資料. 智能合約是在EVM (Ethereum Virtual Machine)中執行的,它是個封閉的環境,所有執行過程都離不開EVM,換句話說,合約沒辦法由EVM內部向外界取得任 ...

  9. oracle -- sqlserver

    程序能同时使用在ORACLE数据库和SQL SERVER 数据库的调查报告(1) 1           编写目的 由于客户所使用的数据库有时候为ORALCE,有时候为SQL SERVER,为了使程序 ...

最新文章

  1. 新建并保存一个空的Excel
  2. 【博弈论】【SG函数】bzoj1457 棋盘游戏
  3. 5个杰出的商业机器学习用例
  4. 为什么程序员总是把圣诞节与万圣夜搞混
  5. 有两个不同list,需要对比两个list内容且输出差异的内容
  6. gin redis 链接不上_php + redis 高并发商品秒杀 完整业务模拟流程 实现方案
  7. python读取图像并相加_python使用PIL和matplotlib获取图片像素点并合并解析
  8. zabbix的启动和关闭脚本
  9. 罗格斯大学电子与计算机系排名,罗格斯大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
  10. [深度学习-总结]LeNet网络的权重的大小的计算
  11. Vue深入学习—虚拟DOM和Diff算法
  12. 进入hbase shell速度很慢_HBase——大数据平台之分布式NoSQL数据库教程
  13. TimeOut 超时问题解决方案
  14. 详解Python线程对象daemon属性对线程退出的影响
  15. word排版案例报告_原来按下这个键,10秒EXCEL与Word格式就能互相转换,涨知识了...
  16. 代码整洁之道读书笔记----第一章---综述--第二节-整洁代码和我们的孩子
  17. ARKit入门到精通-1.5 -基础内容-史小川-专题视频课程
  18. 我国iPS细胞事业支援促进委员会成立
  19. vue-meta实现router动态设置meta标签
  20. python高德地图api调用实例_Python玩转高德地图API(二)

热门文章

  1. 遍历JSON所有节点(深度优先遍历)
  2. dcf是ea211发动机吗_神车发动机解读:EA211到底牛掰在哪儿?
  3. CAS前后端分离思路,gateway绑定cas的TGT
  4. [CoreOS 转载] CoreOS实践指南(三):系统服务管家Systemd
  5. 2019 阿里云峰会·北京站正式启动,互联网出海分论坛报名开启
  6. C语言基础之C语言程序和函数及system函数的运用
  7. FT232R转RS485电路图
  8. CAD2010软件中点样式设置命令
  9. Zuul网关并发量调试
  10. SwiftUI基础之设置TextField的placeholder文本颜色(text color)