linux db2乱码,DB2乱码(开始和结束,字符串中间没有好的办法)
针对汉字乱码
末尾乱码:末尾第二个字节的ASCII的值大于224 或 末尾第一个字节的ASCII的值大于224 去掉办法:case when length(colname)>1 and ascii(substr(colname,length(colname),1))>224 then 去掉最后一位
when length(colname)>2 and ascii(substr(colname,length(colname)-1,1))>224 then 去掉最后两位
colname end
开始乱码:第一个字节的ASCII的值大于128且小于224 , 且 第二个字节的ASCII值大于128 为前两位乱码 否则首位乱码 去掉办法:case when length(colname)>2 and ascii(substr(colname,1))>128 and and ascii(substr(colname,1))< 224 and and ascii(substr(colname,2,1)>128 then 去掉前两位 when length(colname)>1 and ascii(substr(colname,1))>128 and and ascii(substr(colname,1))< 224 then 去掉第一位 colname end
详见:
用 substr截取函数会产生乱码,用right或left会把乱码替换为空格
values (ascii(substr('硬拷贝',1,1)),ascii(substr('拷贝',1,1)),ascii(substr('贝',1,1)),ascii(left('硬拷贝',1))),
(ascii(substr('硬拷贝',2,1)),ascii(substr('拷贝',2,1)),ascii(substr('贝',2,1)),ascii(left('硬拷贝',1))),
(ascii(substr('硬拷贝',3,1)),ascii(substr('拷贝',3,1)),ascii(substr('贝',3,1)),ascii(left('硬拷贝',1)))
对于乱码无较好的办法,只能进行挨个字符判断
1)?对只有在末尾和开始才有的处理
末尾第二个字节的ASCII的值大于224 且 第一个字节的ASCII值大于128 为乱码 或 末尾第一个字节的ASCII的值大于224?待确定
开始第一个字节的ASCII的值大于128 或 第二个字节的ASCII值大于128 为乱码?待确定
2)?对在末尾和开始、中间都有的处理
UTF-8 字符的最大长度可以为 4 个字节。非补充字符的最大长度为 3 个字节,而补充字符的长度为 4 个字节。
使用 UTF-8 格式的每个 UTF-16 字符的字节数可根据表 1 来确定。
在以上每一项中,u、w、x、y 和 z 串都是字符的位表示法。例如,U+0080 变换为二进制中的 11000010 10000000,而代用字符对 U+D800 U+DC00 变为 二进制中的 11110000 10010000 10000000 10000000。
values 128+64+32
values 128+64+32 =224
values 14*16 =224
VALUES (X'C3B1C3B2C3B3')
VALUES chr(65),chr(224)
VALUES GRAPHIC('硬拷贝'),substr(GRAPHIC('硬拷贝'),1,1)
VALUES VARGRAPHIC('硬拷贝'),substr(VARGRAPHIC('硬拷贝'),1,1)
values VARGRAPHIC(substr('贝',1,1))--出错
UTF编码
UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:
UCS-2编码(16进制) UTF-8 字节流(二进制)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
读者可以用记事本测试一下我们的编码是否正确。需要注意,UltraEdit在打开utf-8编码的文本文件时会自动转换为UTF-16,可能产生混淆。你可以在设置中关掉这个选项。更好的工具是Hex Workshop。
UTF-16以16位为单元对UCS进行编码。对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000,所以就目前而言,可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题。
linux db2乱码,DB2乱码(开始和结束,字符串中间没有好的办法)相关推荐
- linux下学习db2
http://blog.csdn.net/sunrier/article/details/7835578 [quote] 本笔记接在上一篇 <<Linux下安装DB2数据库步骤>&g ...
- Linux下安装DB2数据库步骤及常用命令
前言: 最近有些项目在Linux下使用的是IBM的DB2数据库,感觉没MySQL那样容易了解深入,可能是DB2数据库更倾向于商业化,没MySQL那样开源,相关DB2的资源网上没MySQL那样普及,至于 ...
- Linux下学习DB2命令的笔记
本笔记接在上一篇 <<Linux下安装DB2 数据库步骤>> http://blog.csdn.net/sunrier/article/details/7826233 ,学习 ...
- Kali Linux 2019.4发布了!解决Kali Linux 2019.4中文乱码问题
Kali Linux 2019.4发布了!解决Kali Linux 2019.4中文乱码问题 参考文章: (1)Kali Linux 2019.4发布了!解决Kali Linux 2019.4中文乱码 ...
- 解决windows文件在linux系统中显示乱码的问题
解决windows文件在linux系统中显示乱码的问题 参考文章: (1)解决windows文件在linux系统中显示乱码的问题 (2)https://www.cnblogs.com/liyanpin ...
- linux oracle em使用,案例:五步解决linux操作系统Oracle EM乱码的问题
天萃荷净 用户生产环境Linux系统Oracle数据库配置OEM使用时出现乱码情况 如果想以中文显示,则需要修改一些配置文件. 包括三个目录: $ORACLE_HOME/jdk/jre/lib $OR ...
- oracle xe 乱码_关于Linux操作系统下终端乱码的完美解决方法
初入linux的程序员们,经常会受到乱码的问候.可谓"始乱终弃".因为乱码,并且最终放弃了linux的不在少数.好吧,言归正传,先看看各类乱码是怎么形成的. 中文字符乱码 这种情况 ...
- linux下安装DB2的详细步骤
我也是才学习,在网上找了一个在linux下安装DB2 的步骤,共享给大家看看了. linux下安装DB2的详细步骤! 第一步:检查程序包及其版本 在软件包管理中查看下列软件包是否安装,如没有安装,先安 ...
- Kali Linux 2019.4用U盘安装以及解决Kali Linux 2019.4中文乱码问题
一.利用Win32 Disk Imager 实现U盘刻录ISO 1.Kali Linux官网下载 2.Win32 Disk Imager官网下载地址 3.打开Win32 Disk Imager软件,添 ...
最新文章
- 常见浏览器User-Agent大全
- 构架、框架、设计模式之间的关系简述
- ReviewForJob——java虚拟机的垃圾回收策略(个人总结)
- C# 获取gzip网页解压处理
- 计算机安全事故由谁整改,信息安全检查整改方案 整改方案 .doc
- c#官方推荐md5通用加密类
- DataList分页,保存CheckBox控件状态
- 从源代码解释Android事件分发机制
- 比特飞-建站100天感悟
- Martin Odersky Scala编程公开课 第二周作业
- htaccess文件是什么
- 彻底告别加解密模块代码拷贝-JCE核心Cpiher详解
- python写的监视bt.ktxp.com的rss的小脚本 updated
- 使用加密解密技术和CA认证解决网络传输中的安全隐患
- 学计算机激励标语口号,关于学习的励志口号标语(精选160句)
- C# Winform 使用 PuppeteerSharp 进行网页截图、生成pdf等操作
- SOLIDWORKS 2022官方正版新功能介绍
- 波束形成算法学习笔记之一(Endfire,broadside)
- 笔记分享②:GPS经纬度坐标转为CGCS2000
- Python生成声音波形、模拟钢琴音色