代码之家  ›  专栏  ›  技术社区  ›  Adam Luchjenbroers

有没有一种方法可以在配置为“us7ascii”的Oracle数据库中存储Unicode文本?

  •  2
  • Adam Luchjenbroers  · 技术社区  · 15 年前

    我们最近遇到了一个障碍,一个商标符号正在从一个Oracle数据库复制到另一个数据库,但它是否被认为是一个'?'.

    我们已经跟踪到目标数据库的问题,该数据库配置了“us7ascii”字符集。不幸的是,重建数据库以解决这一问题,我们目前无法做到。

    是否可以定义特定列以使用服务器上配置的字符集以外的字符集?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Vincent Malgrat    15 年前

    你可以使用 NVARCHAR2 列而不是varchar2列。在视图中查看 NLS_DATABASE_PARAMETERS 确定nvarchar2字符集(它始终支持Unicode)。

        2
  •  0
  •   Joachim Sauer    15 年前

    你可以用 UTF-7 encoding 以7bit编码存储任意Unicode字符串。Unicode文本的UTF-7编码恰好是完全合法的ASCII文本。

    当然,无论您想在何处使用这些值,都需要特别注意,因为它们是不可读的(而且很少使用UTF-7,以至于您可能在任何地方都不支持它)。

    或者,您可以使用更常见的编码方式,如base64,但这样做的缺点是,即使在这种编码方式中,几乎所有的ASCII文本都是不可读的。这意味着你至少不会 某物 人类可读,当某些部分 正确处理编码。

    推荐文章