9.6. 为数据库配置 Unicode 支持


Unicode 对所有字段的支持取决于数据库是否允许 VARCHAR 和 CHAR 字段使用 Unicode 字符集。

  • 如果可以设置这些字段,则 Unicode 可能可以正常工作,通常以字段长度为代价。
  • 如果数据库只支持 NVARCHAR 和 NCHAR 字段中的 Unicode,则 Unicode 对所有文本字段的支持不太可能工作,因为服务器架构广泛使用 VARCHAR 和 CHAR 字段。

数据库模式只为以下特殊字段提供对 Unicode 字符串的支持:

  • realm :显示名称、HTML 显示名称、本地化文本(键和值)
  • 联邦 供应商:显示名称
  • Users: username, given name, last name, attribute name and values
  • groups :名称、属性名称和值
  • roles: name
  • 对象描述

否则,字符仅限于数据库编码中包含的字符,通常为 8 位。但是,对于某些数据库系统,您可以启用 Unicode 字符的 UTF-8 编码,并在所有文本字段中使用完整的 Unicode 字符。对于给定的数据库,这个选择可能会导致最大字符串长度比 8 位编码支持的最大字符串长度要短。

9.6.1. 为 Oracle 数据库配置 Unicode 支持

如果在 VARCHAR 和 CHAR 字段中使用 Unicode 支持创建数据库,则 Oracle 数据库中支持 Unicode 字符。例如,您配置了 AL32UTF8 作为数据库字符集。在这种情况下,jdbc 驱动程序不需要特殊设置。

如果没有使用 Unicode 支持创建数据库,您需要配置 JDBC 驱动程序来支持特殊字段中的 Unicode 字符。您可以配置两个属性。请注意,您可以将这些属性配置为系统属性或连接属性。

  1. oracle.jdbc.defaultNChar 设置为 true
  2. (可选)将 oracle.jdbc.convertNcharLiterals 设置为 true

    注意

    有关这些属性和任何性能影响的详情,请查看 Oracle JDBC 驱动程序配置文档。

9.6.2. 对 Microsoft SQL Server 数据库的 Unicode 支持

Unicode 字符只支持 Microsoft SQL Server 数据库的特殊字段。数据库不需要特殊设置。

JDBC 驱动程序的 sendStringParametersAsUnicode 属性应设为 false,以显著提高性能。如果没有此参数,Microsoft SQL Server 可能无法使用索引。

9.6.3. 为 MySQL 数据库配置 Unicode 支持

如果使用 CREATE DATABASE 命令,如果在 VARCHAR 和 CHAR 字段中使用 Unicode 支持创建数据库,则 MySQL 数据库中支持 Unicode 字符。

请注意,由于 utf8 字符集的不同存储要求,不支持 utf8mb4 字符集。详情请查看 MySQL 文档。在这种情况下,非特殊字段的长度限制不适用,因为创建了列来容纳字符数,而不是字节。如果数据库默认字符集不允许 Unicode 存储,则只有特殊字段可以存储 Unicode 值。

  1. 启动 MySQL 服务器。
  2. 在 JDBC 驱动程序设置下,找到 JDBC 连接设置
  3. 添加此连接属性: characterEncoding=UTF-8

9.6.4. 为 PostgreSQL 数据库配置 Unicode 支持

当数据库字符设置为 UTF8 时,PostgreSQL 数据库支持 Unicode。对于非特殊字段,任何字段都可使用 Unicode 字符,且不能减少字段长度。JDBC 驱动程序不需要特殊设置。字符集是在创建 PostgreSQL 数据库时决定的。

  1. 输入以下 SQL 命令,检查 PostgreSQL 集群的默认字符集。

    show server_encoding;
    Copy to Clipboard Toggle word wrap
  2. 如果默认字符集不是 UTF 8,请使用命令创建使用 UTF8 作为默认字符集的数据库,例如:

    create database keycloak with encoding 'UTF8';
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat