欢迎来到天天文库
浏览记录
ID:38047986
大小:24.02 KB
页数:5页
时间:2019-05-24
《SQL Server 2005 中的 Unicode 支持》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQLServer2005中的Unicode支持Unicode支持是SQLServer2005中多语言支持的基础。Unicode是由UnicodeConsortium(一个提倡为所有语言使用单一字符集的组织)创立的一项标准。SQLServer2005支持Unicode标准3.2版。Unicode标准的3.01版与ISO-10646(一项与Unicode中的所有码位均相符的国际标准)完全相同。 Unicode的工作方式是,为每个字符提供一个唯一的码位,该码位与平台、程序或语言无关。支持Unicode的程序可以处理任何语言的数据。因为其设计宗旨是涵盖世界上所有语言的所有字符,所以不需要让不同
2、的代码页来处理不同的字符集。 因为所有Unicode系统都统一使用相同的位模式来表示所有字符,所以从一个系统转到另一个系统时,不会出现字符转换不正确的问题。 管理国际数据库中的字符数据的最简单方法是始终使用Unicodenchar、nvarchar和nvarchar(max)数据类型,而不使用它们对应的非Unicode数据类型:char、varchar和text。这样,客户端与所有其他客户端所看到的数据中的字符将是相同的。如果所有使用国际数据库的应用程序还使用Unicode变量来代替非Unicode变量,则不需要在系统中的任何位置执行字符转换。 注意未来版本的MicrosoftSQL
3、Server中将删除ntext数据类型。 Unicode码位及它们所代表的字符与用于可视呈现的“字形”是分开的。ISO标准(ISO/IEC9541-1)将字形定义为“与具体设计无关的可识别抽象图形符号”。因此,一个字符不必总是由相同的字形乃至唯一的字形来表示。所选择的字体决定将使用什么字形来表示特定码位或一系列码位。 有关详细信息,请参阅UnicodeConsortium网站。 编码 Unicode将码位映射到字符,但实际上并不指定数据在内存、数据库或网页中的表示方式。这便是Unicode数据编码发挥作用的地方。有许多不同的Unicode编码。多半选择一种Unicode数据类型即可
4、,不必为这些细节操心;不过,在以下情况下了解编码有重要意义: •应对可能以不同方式对Unicode进行编码的应用程序时 •向其他平台(非MicrosoftWindows)或Web服务器发送数据时 •导入其他编码的数据或将数据导出为其他编码时 Unicode标准定义了其单一字符集的多种编码:UTF-7、UTF-8、UTF-16和UTF-32。本部分对这些常见的编码进行说明: •UCS-2 •UTF-16 •UTF-8 SQLServer通常以UCS-2编码方案存储Unicode。不过,许多客户端以另一种编码方案(如UTF-8)来处理Unicode。这种情况在基于Web的应用程
5、序中经常出现。在MicrosoftVisualBasic应用程序中,字符串以UCS-2编码方案来处理。因此,不需要显式地指定VisualBasic应用程序与SQLServer实例之间的编码方案转换。 SQLServer2005使用Unicode(UTF-16)来对XML数据进行编码。类型为xml的列中的数据以内部格式存储为二进制大型对象(BLOB),以支持XML模型特征,如文档顺序和递归结构。因此,从服务器检索的XML数据会以UTF-16格式输出;如果想要为检索的数据使用其他编码,则应用程序必须对所检索的UTF-16数据执行必要的转换。《SQLServer2005联机丛书》中的XML最佳
6、实践提供了如何为从varchar(max)列中检索的XML数据显式地声明编码的示例。 使用UTF-16编码是因为它可以处理2字节或4字节字符,并且处理是依照面向字节的协议进行的。这些特性使得UTF-16非常适合于遍历使用不同编码和字节排序系统的不同计算机。因为XML数据通常在网络上得到广泛共享,所以在数据库中及在将XML数据导出到客户端时保持默认的UTF-16存储格式是有意义的。 UCS-2 UCS-2是UTF-16的前身。UCS-2与UTF-16的不同之处是,UCS-2是一种固定长度编码,它以16位值(2个字节)表示所有字符,因此不支持补充字符。UCS-2常与UTF-16发生混淆,
7、UTF-16用于在内部表示MicrosoftWindows操作系统(WindowsNT、Windows2000、WindowsXP和WindowsCE)中的文本,但UCS-2受到的限制更多。 注意有关在Windows操作系统中使用Unicode的最新信息,请参阅MicrosoftDeveloperNetwork(MSDN)库中的Unicode。建议Windows应用程序在内部使用UTF-16,仅在必须使用其他格式时再通
此文档下载收益归作者所有