代码之家  ›  专栏  ›  技术社区  ›  Aaron Fi

在Oracle中,如何将会话更改为显示utf8?

  •  13
  • Aaron Fi  · 技术社区  · 15 年前

    我不知道甲骨文的加密语法对我的生活。这是Oracle 10g

    我的课程的NLS语言目前默认为美国语言。 我需要能够显示utf8字符。

    以下是我的一些尝试,都不正确:

    ALTER SESSION SET NLS_LANGUAGE='UTF8'
    ALTER SESSION SET NLS_LANGUAGE='AMERICAN_AMERICA.UTF8'
    

    秘密司令部是什么?

    3 回复  |  直到 9 年前
        1
  •  13
  •   APC    15 年前

    字符集是区域设置的一部分,它由 NLS_LANG . AS the documentation makes clear 这是 操作系统变量 :

    纳尔斯朗 设置为环境 Unix平台上的变量。 纳尔斯朗 在Windows上的注册表中设置 平台。

    现在我们可以使用 ALTER SESSION 要更改几个区域设置元素、NLS语言和NLS区域的值。但是,可惜的是,角色设置。这种差异的原因是——我认为——语言和区域仅仅影响到Oracle如何解释存储的数据,例如,在显示大数字时是显示逗号还是显示句点。当字符集涉及到客户机应用程序如何呈现显示的数据时。此信息由客户端应用程序在启动时获取,不能从内部更改。

        2
  •  9
  •   Aaron Fi    15 年前

    好的,每个 http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm 以下内容:

    NLS语言不能由alter更改 会话、NLS语言和 NLS的领土可以。然而 NLS语言和/或NLS领土 不能设置为“独立” 环境参数或 客户端上的注册表。

    显然,“正确”的解决方案是,在登录到Oracle之前,设置以下环境变量:

    export NLS_LANG=AMERICAN_AMERICA.UTF8
    

    甲骨文的可用性得到了很大的提高。

        3
  •  3
  •   pahariayogi    9 年前

    因此,在开始之前$ SqlPlus '在操作系统上,运行以下内容:

    • 在Windows上

      设置nls_lang=american_america.utf8

    • 在Unix上(Solaris和Linux、CentOS等)

      export nls_lang=美国\美国.utf8

    最好在.bash_概要文件[启动脚本]中设置env变量。

    这是通常设置其他Oracle env变量(Oracle_-sid、Oracle_-home)的位置。

    只是FYI SQL开发者 擅长显示/处理非英语的utf8字符。