lucheng918的个人博客分享 http://blog.sciencenet.cn/u/lucheng918

博文

字符编码

已有 3032 次阅读 2014-2-12 11:28 |个人分类:linux+oracle|系统分类:科研笔记| 编码

NLS : national language support

单字节编码方案:

7-bit:ASCII 可以定义128个字符,仅支持英语一种语言

8-bit:ISO8859-1 可以定义256个字符,仅支持西欧语言

以上并不支持亚洲语言


多字节编码:对亚洲非洲语言的支持

定长多字节编码:至少两个byte字节表示字符,oracle唯一支持的定长多字节编码AF16utf-16


变长多字节编码:

用一个或多个字节表示一个字符,适用于日语,汉语,印度语

AL32UTF8 AL代表all,zhs16cgb231280用于简体中文  zht表示对繁体中文的支持


提醒一点,使用控制码区分单字节和多字节字符的编码


命名约定

US7ASCII 美国7位编码

WE8ISO8859P1  西欧 ISO8859 Part1

AL32UTF8  unicode5.0支持所有的字符 universal character set  32位

JA16SJIS  日本16位


数据库需要支持那些语言,未来需要支持那些语言,操作系统支持哪些语言,客户机需要支持那些语言,客户机程序支持那些语言?


修改字符集:AlTER DATABASE CHARACTER SET 数据库新字符集是当前字符集的超集

字符集转化:缺点:数据丢失,增加开销。

convert函数 字符串从一种转为另一种  convert('adsf','us7ASCII','we88ISO8859p1')

需要确认所有的数据是否在目标字符集中有替代字符,看看两者是否兼容

因此,为避免这个问题,应该通过convert函数进行测试,或者使用实用工具csscan对数据库进行扫描,发现潜在的问题,以防止转换而丢失数据。


没有限制的多语言支持:

两种常用的编码方案:

UCS-2:定长,2字节,不支持扩充字符,用于java和微软

utf16:每个字符是2或4字节,用于microsoft windows 2000

utf8:每个字符是1到4个字节存储。可变长的字符编码。ASC应该是1个字节,大部分汉字是3个字节。用于html


nchar列存储unicode字符。


全球化支持环境

服务器初始化参数:

NLS_TERRITORY="AMERICA"

客户端环境变量

setenv NLS_LANGUAGE=AMERICAN

export NLS_LANGUAGE=AMERICAN

使用ALTER SESSION语句

alter session set nls_language=AMERICAN;

在SQL函数中,TO_CHAR(hiredate,'DD/MON/YYYY','nls_date_language=AMERICAN'

优先级:

1.SQL函数

2.alter session

3.客户端环境变量

4.初始化参数

5.环境设置


NLS_language =AMERICAN

NLS_TERRITORY=AMERICA 注:地区优先于语言,一般会根据地区显示相应字符

'L99G999D99' 24.000,00(德国小数点是“,”)


                数字分隔符   小数点

爱沙尼亚    空格              ,

德国              .                    ,

日本,英国,美国 ,     .


所有的简体中文字符集都是US7ASCII的超集

常见的 ZHS16CHB231280

ZHS16GBK

ZHS32GB18030


GB2312 又称GB2312-80字符集,汉字编码字符集,由国家标准总局发布。收录99.75%的汉字

特征:分区表示

双字节表示


GBK:国标扩展码,与GB2312编码兼容,可以看做是扩展,向上支持ISO10646.1,与unicode编码完全兼容。GB13000.1等同ISO10646.1,并且包含了big5编码的所有汉字。

GB18030:2001年执行,信息技术编码字符集,包括少数民族文字。收录汉字70000个。包括双字节部分和四字节部分。双字节部分就是GBK的21003个汉字。

全面兼容GB2312,词汇上兼容GB13000.1


oracle通过zhs32gb18030和al32utf8或utf8支持gb18030-2000标准。








https://wap.sciencenet.cn/blog-780964-766794.html

上一篇:linux cat 命令
下一篇:在sqlplus登陆oracle数据库登陆的是哪个数据库呢?
收藏 IP: 168.160.22.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-3 22:06

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部