设置 Unicode
要设置和使用 Unicode,必须执行特定步骤,以便 API 在服务器上注册 Unicode 文件空间,并且该文件空间中的所有文件名成为 Unicode 字符串。
- 使用 -DUNICODE 标志编译代码。
- 应用程序中的所有字符串必须为 wchar 字符串。
- 对于对 API 的调用,遵循 tsmapitd.h 文件中结构以及 tsmapifp.h 文件中的函数定义。
- 在 tsmInitEx 函数调用上,将 useUnicode 标志设置为 bTrue 。 任何新文件空间均注册为 Unicode 文件空间。
向先前注册的非 Unicode 文件空间发送数据时,API 继续将文件名作为非 Unicode 发送。 将服务器上的旧文件空间重命名为 fsname_old 并为新数据启动新的 Unicode 文件空间。 API 从旧文件空间恢复非 Unicode 数据。 使用在查询文件空间上返回的 tsmQryRespFSData 结构中的 bIsUnicode 字段来确定文件空间是否为 Unicode。
部分常量继续在 dsmapitd.h 文件中定义,因此在编译时您需要 dsmapitd.h 和 tsmapitd.h 这两个文件。
您可以在其他操作系统(如 UNIX 或 Linux® )上使用 IBM Storage 保护接口,但在这些操作系统上, dsChar_t 类型映射为 char,因为 Windows 操作系统支持 Unicode。 使用 IBM Storage Protect 界面,您只需编写一个应用程序的变体,并在多个操作系统上进行编译。 如果要编写新的应用程序,请使用 IBM Storage 保护界面。
如果正在升级现有应用程序:
- 将 dsmXXX 函数调用结构和调用转换为 IBM Storage Protect 接口。
- 迁移现有文件空间。
- 在将 useUnicode 标志设置为 true 的情况下备份新文件空间。
启用 useUnicode 标志时,所有字符串结构均视为 Unicode 字符串。 在服务器上,仅以下字段为真正的 Unicode:
- 文件空间名称
- 高级别
- 低级别
- 归档描述
所有其余字段在被发送到服务器之前将被转换为本地代码页。 诸如节点名之类的字段为 wchar 字符串。 它们必须在当前语言环境中有效。 例如,在日语环境的机器上,可使用中文名称备份文件,但是节点名必须是日语中的有效字符串。 选项文件仍在当前代码页中。 如果需要创建 Unicode 包含/排除列表,请将 inclexcl 选项与文件名配合使用,并创建包含 Unicode 模式的 Unicode 文件。