【问题标题】:Inserting UNICODE characters in Sql在 Sql 中插入 UNICODE 字符
【发布时间】:2010-10-28 05:41:23
【问题描述】:

我正在尝试将 unicode 字符串导入 SQL*Plus:版本 10.2.0.2.0 数据库,但遇到了困难。如果我使用 SQLPlus 并将插入语句复制并粘贴到数据库中,任何特殊字符都会插入为?或类似的东西。然后我尝试调用一个已经编码为 UTF-8 的 sql 文件,结果是一样的。 有谁知道如何将 unicode 数据导入数据库?

谁能帮忙。如何在 sqlplus 中设置 NLS_LANG 选项

【问题讨论】:

标签: sql unicode sqlplus


【解决方案1】:

SQL *Plus 不是数据库,它是基于命令行的 SQL 或 PL/SQL 数据库前端。命令行通常只支持 ANSI 或 ASCI 编码的字符。因此,当您尝试粘贴命令时,程序 (SQL *Plus) 只是替换了它无法弄清楚如何用“?”进行编码的文本。分数。您可能需要切换到不同的客户端应用程序才能使用 UTF-8

【讨论】:

    【解决方案2】:

    在我的情况下,问题不在sqlplus,而是在运行数据库的环境中。我设置后

    NLS_LANG=RUSSIAN_RUSSIA.UTF8
    

    我可以插入 unicode 字符而不会出现任何失真。 可能需要重新启动才能生效(db 或 OS 或两者)。我在 docker 中运行一个 Oracle XE db 所以 我必须将-e NLS_LANG=RUSSIAN_RUSSIA.UTF8 添加到docker run... 命令中,如下所示:

    docker run -d --rm -p 49161:1521 --name db -e NLS_LANG=RUSSIAN_RUSSIA.UTF8 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g
    

    【讨论】:

      【解决方案3】:

      设置 NLS_LANG 环境变量以使 SQL*Plus 理解您正在使用的字符表示。

      http://www.sqlsnippets.com/en/topic-13434.html

      【讨论】:

        【解决方案4】:

        尝试在这个语句周围使用一些东西

        update pp.pp_employee t  
        set t.first_name=UNISTR('АБДАЛЛА')   
        where t.emp_id =  5451  ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-17
          • 2013-07-05
          • 2020-04-02
          • 1970-01-01
          • 2014-01-08
          • 1970-01-01
          • 2013-09-26
          相关资源
          最近更新 更多