非 Unicode 数据库中的 XML
2009-11-28 00:00:00 来源:WEB开发网在了解如何在非 Unicode 数据库中安全地存储这些数据之前,需要研究解析和查询执行期间 XML 数据在 DB2 中的流程,包括从客户机到服务器,以及从服务器到 pureXML 特性。
XML 数据流
DB2 的 XML 组件在 Unicode 代码页范围内操作。因此,所有 XML 解析、串行化、查询执行和压缩都必须在 Unicode 代码页范围内进行。当数据库是 UTF-8 数据库时,可以在数据库代码页中操纵数据。如果数据库采用非 Unicode 代码页(例如 ISO-8859-1),那么所有 XML 文档、XQUERY 字符串和片段都必须经过代码页转换,从数据库代码页转换为 Unicode(特别地,转换为 UTF-8,代码页 1208)。
DB2 的 SQL 组件在数据库代码页中操作。所有 SQL 比较、SQL 查询执行以及 SQL 类型转换都必须在数据库代码页中进行。如果查询由一些 XML 活动和一些 SQL 活动组成,那么要在 “XML” 和 “SQL” 这两个 “世界” 之间进行转换,因为每个世界的数据必须在正确的代码页中。
将数据从数据库代码页转换为 UTF-8 代码页称为转换到 “XML 世界”,而将数据从 UTF-8 转换到数据库代码页则称为转换到 “SQL 世界”。这是服务器上 SQL/XML 或 XQUERY 执行期间惟一的两种代码页转换形式。
为了使非 Unicode 数据库支持 XML,建议使用一个 Unicode 客户机,因为客户机必须能够呈现输入 XML 和结果 XML 文档中的所有字符。如果哦客户机代码页和数据库代码页相同,那么客户机与服务器之间就不存在转换,于是客户机就可以呈现输入 XML 和结果 XML 文档中的所有字符。
客户机可以临时使用 DB2CODEPAGE 环境变量覆盖代码页。如果将这个变量设置为 1208 (UTF-8),那么 DB2 就可以像在代码页 1208 中那样与客户机通信。用这种方法覆盖客户机代码页可能导致不正确的输出或者不能打印的字符(例如将 Kanji 数据从一个 943 数据库发送到一个已经覆盖了 DB2CODEPAGE 的 ASCII 客户机)。在 Windows 中,可以在 Windows 控制面板中修改语言和环境设置,以覆盖客户机环境的代码页。
更多精彩
赞助商链接