关于Unicode字符集

关于Unicode字符集最初的 unicode 编码是固定长度的 16 位 也就是 2 两个字节代表一个字符 这样一共可以表示 65536 个字符 显然 这样要表示各种语言中所有的字符是远远不够的 Unicode4 0 规范考虑到了这种情况 定义了一组附加字符编码 附加字符编码采用 2 个 16 位来表示 这样最多可以定义个附加字符 目前 unicode4 0 只定义了 45960 个附加字符 Unicode 只是一个编码规范 目前实际

最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义个附加字符,目前unicode4.0只定义了45960个附加字符。

Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16,三种unicode字符集之间可以按照规范进行转换。

 

UTF-8

UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

Unix平台中普遍支持UTF-8字符集,HTML和大多数浏览器也支持UTF-8,而window和java则支持UCS-2。

UTF-8的主要优点:

  • 对于欧洲字母字符需要较少的存储空间。
  • 容易从ASCII字符集向UTF-8迁移。

UCS-2

UCS-2是固定长度为16位的unicode字符集。每个字符都是2个字节,UCS-2只支持unicode3.0,所以不支持附加字符。

UCS-2的优点:

  • 对于亚洲字符的存储空间需求比UTF-8少,因为每个字符都是2个字节。
  • 处理字符的速度比UTF-8更快,因为是固定长度编码的。
  • 对于windows和java的支持更好。

UTF-16

UTF-16也是一种16位编码的字符集。实际上,UTF-16就是UCS-2加上附加字符的支持,也就是符合unicode4.0规范的UCS-2。所以UTF-16是UCS-2的严格超集。

UTF-16中的字符,要么是2个字节,要么是4个字节表示的。UTF-16主要在windows2000以上版本使用。

UTF-16相对UTF-8的优点,和UCS-2是一致的。

Oracle从7.0开始提供对Unicode的支持。Oracle个版本的unicode字符集支主要有:

AL32UTF8

一种UTF-8编码的字符集,支持最新的unicode4.0标准。字符长度为1,2或者3个字节,附加字符则为4字节长。

UTF8

支持unicode3.0的UTF-8编码方式。由于附加字符是在unicode3.1中提出的,UTF8不支持附加字符。但是unicode3.0已经为附加字符预留了编码空间,所以即使在UTF8的数据库中插入附加字符,也是可以的,只是数据库会将该字符分隔成两部分,需要占6个字符的长度。所以,如果需要支持附加字符,那么建议将数据库的字符集切换为新的AL32UTF8。

UTF8可用于数据库字符集,也可用于国家字符集。

UTFE

UTFE是基于EBCDIC平台的unicode字符集,就像ASCII平台上的UTF8一样。不同的是,UTFE中,每个字符可能占1,2,3或者4个字节,而附加字符则需要2个4个字节,也就是8个字节来表示。

AL16UTF16

AL16UTF16是一种UTF-16编码的unicode字符集,在Oracle中用于国家字符集。

AL24UTFFSS

该字符集只支持unicode1.1规范,在Oracle7.2~8i版本中使用,目前已经淘汰。

 

CString在Unicode下一个字节占16bit,在ascii下占8bit,改成char数组后在什么环境下都一样的

 

编写程序最好是:同一个源文件既可以在UNICODE下编译,又可以在ANSI下编译

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198289.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:24
下一篇 2026年3月26日 下午3:24


相关推荐

  • query.php?sl=,stripslashes_deep().?php stripslashes?php stripslashes和addsl

    query.php?sl=,stripslashes_deep().?php stripslashes?php stripslashes和addsl你是否正在寻找关于stripslashes的内容?让我把最简洁的东西奉献给你:phpstripslashes和addslashes的区别作者:字体:[]类型:转载时间:2014-02-03这篇文章主要介绍了phpstripslashes和addslashes的区别,特分享下方便需要的朋友。我们在向mysql写入数据时,比如:复制代码代码如下:mysql_query(“update…

    2022年10月9日
    4
  • 静默安装失败是什么意思_静默安装命令

    静默安装失败是什么意思_静默安装命令静默安装Oracle Database 18c

    2022年4月21日
    217
  • fwrite与fread_fwrite和fprintf

    fwrite与fread_fwrite和fprintffread()函数与fwrite函数

    2025年9月4日
    5
  • createcompatibledc报错_Compatible

    createcompatibledc报错_CompatibleCreateCompatibleDC函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。函数原型:HDCCreateCompatibleDC(HDChdc);参数:hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL

    2025年7月31日
    4
  • 5G信道建模

    5G信道建模5G毫米波一般认为毫米波波段的信道具有稀疏性,即径数远小于天线数,因此直接在角度域上通过估计各条径的AoD/AoA和增益系数做信道估计,比起在天线域上做信道估计更简单。但这么做还隐含了每条可分辨径的角度扩展很小这样的假设,在mmWavemMIMO系统中,信道估计等同于估计AoA和AoD以及每条path的散射系数,就是毫米波波段的情况。而在低频NLoS情况下,由于散射传播路径非常丰富,信道不存在稀疏性,也没有一个清晰的几何结构,因此一般建模为随机的比如Rayleigh信道。对于这种信道我们就对其整体进行估

    2022年5月2日
    81
  • Mysql之Linux环境下如何彻底删除卸载Mysql

    Mysql之Linux环境下如何彻底删除卸载Mysql首先连接操作系统,切换到root用户。一、如果是使用yum安装的mysql,使用如下命令进行卸载(不能确定使用何种方式安装的mysql情况下,按后续步骤一一进行处理即可):#yumremovemysqlmysql-servermysql-libscompat-mysql51#rm-rf/var/lib/mysq#rm/etc/my.cnf使用rpm-qa|grepmysq…

    2022年6月18日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号