国际化概述
WebLogic Server 中 I18n 的主要特性:
在 WebLogic Server 内部,所有字符都按 Unicode 进行处理。只要输入或输出字符数据,就执行代码转换。
必须分别为 WebLogic Server、J2EE 组件和 WebLogic Server 容器上的资源指定适当的编码转换。
假如不指定编码转换,系统将应用默认的编码转换。
存在各种类型的默认编码转换,其中的一些编码转换不符合操作系统的区域设置。
在使用 WebLogic Server 生成用于处理多字节字符数据的分布式系统之前,应该了解如何指定有关 Java 和 J2EE 的适当编码。而且,在控制编码转换时,应该适当考虑连接到 WebLogic Server 的系统(例如,操作系统、Internet、后端系统)的编码处理。
下面简要描述了 WebLogic Server 中的编码处理。
Unicode 的使用
WebLogic Server 是一种 100% 纯 Java 应用服务器程序,它使用 Unicode 进行服务器内部编码。
这样 WebLogic Server 就能同时处理所有语言的字符(只要 Unicode 能够处理这些字符)。
编码转换
当 WebLogic Server 与外部交换字符数据时,需要进行编码转换。
Unicode 是 Java 的内部编码,而在普通的操作系统中,几乎没有任何环境使用 Unicode,它们使用的是为每个平台单独定义的称为“本地编码”的编码。例如,Windows 系统的本地编码是一个与语言有关的代码页,Unix 系统的本地编码是与用 LANG 环境变量指定的区域设置相对应的编码,数据库的本地编码是在创建数据库时指定的字符集或者由客户端指定的字符集。
因此,在 WebLogic Server 中进行输入和输出时,需要进行本地编码与 Unicode 之间的编码转换。当 WebLogic Server 与操作系统或外部资源交换字符数据时,总会发生这种编码转换。
注重:序列化的 Java 类流中包含的字符作为(UTF-8 编码的)Unicode 保存在该类的内部信息中。这意味着无需考虑序列化流的代码转换。例如,对于 EJB 或 RMI 无需考虑编码。
因为编码转换是针对单个字符进行的,所以转换过程会占用大量 CPU 资源。在设计应用程序时,最好避免进行代码转换,以确保系统性能较高。
WebLogic Server 服务器自身的编码转换与应用程序组件和资源的编码转换是相互独立的
在 WebLogic Server 中,服务器本身的编码转换与 WebLogic Server 上应用程序组件和资源的编码转换是分开的。
在 WebLogic Server 中,服务器日志或治理控制台的编码是由服务器的 Java VM 或浏览器的语言设置的默认编码确定的,而与应用程序组件的编码或 WebLogic Server 提供的内容所用的语言无关。
而且,在配置 WebLogic Server 的行为时,可以不考虑 WebLogic Server 使用的区域设置或语言设置。
还可以为在 WebLogic Server 容器上配置的资源单独设置编码转换。
WebLogic Server 本身的编码转换包括:
WebLogic Server 的系统日志输出
治理控制台的页面编码
WebLogic Server 和本地文件系统之间的文件 I/O
单个应用程序的编码转换包括:
jsp 文件
Servlet
DD 文件
XML
Web Service
WebLogic Server 上的资源包括:
JDBC 连接
WTC 连接等
为 WebLogic Server 指定编码时,需要弄清楚要为哪些类别指定编码,然后需要查看是否可以创建有效的 Character 对象,以及 WebLogic Server 中的 Character 对象是否可以正确地转换为所需的编码。
如上所述,您应该了解编码转换行为,以便进行正确的设置。假如不指定编码转换,应用程序将无法正确处理多字节字符。
假如不指定编码,将使用适合情况的默认编码。默认编码可能因目标的规范或环境而异。
默认编码示例
影响 WebLogic Server 行为的默认编码包括:
服务器 VM 的默认编码
J2EE 的默认编码
XML 的默认编码
HTTP 协议的默认编码
浏览器的默认编码
Web Service(例如,SOAP、WSDL、UDDI)的默认编码等