在Sql中插入UNICODE字符

在Sql中插入UNICODE字符,sql,unicode,sqlplus,Sql,Unicode,Sqlplus,我试图将unicode字符串放入SQL*Plus:Release 10.2.0.2.0数据库,但遇到了一些困难。如果我使用SQLPlus并将insert语句复制粘贴到数据库中,会插入任何特殊字符作为?或者类似的。然后我尝试调用一个已编码为UTF-8的sql文件,结果是相同的。 有人知道如何将unicode数据输入数据库吗 有人能帮忙吗。如何在sqlplus中设置NLS_LANG选项SQL*Plus不是数据库,它是SQL或PL/SQL数据库的基于命令行的前端。命令行通常只支持ANSI或ASCI编码

我试图将unicode字符串放入SQL*Plus:Release 10.2.0.2.0数据库,但遇到了一些困难。如果我使用SQLPlus并将insert语句复制粘贴到数据库中,会插入任何特殊字符作为?或者类似的。然后我尝试调用一个已编码为UTF-8的sql文件,结果是相同的。 有人知道如何将unicode数据输入数据库吗


有人能帮忙吗。如何在sqlplus中设置NLS_LANG选项SQL*Plus不是数据库,它是SQL或PL/SQL数据库的基于命令行的前端。命令行通常只支持ANSI或ASCI编码的字符。因此,当您尝试在命令中粘贴时,程序(SQL*Plus)只会替换文本,而它不知道如何使用“?”标记进行编码。您可能需要切换到其他客户端应用程序才能使用UTF-8,因为SQL*Plus不是一个数据库,它是SQL或PL/SQL数据库的基于命令行的前端。命令行通常只支持ANSI或ASCI编码的字符。因此,当您尝试在命令中粘贴时,程序(SQL*Plus)只会替换文本,而它不知道如何使用“?”标记进行编码。您可能需要切换到另一个客户端应用程序来使用UTF-8,并尝试使用与此语句相关的内容

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

试着围绕这句话使用一些东西

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

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


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


在我的例子中,问题不在
sqlplus
中,而是在数据库运行的环境中。在我设定之后

NLS_LANG=RUSSIAN_RUSSIA.UTF8
我可以在不失真的情况下插入unicode字符。 要使其生效,可能需要重新启动(db或OS或两者)。我在docker中运行Oracle XE db,所以 我不得不将
-e NLS_LANG=rusian_rusia.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

在我的例子中,问题不在
sqlplus
中,而是在数据库运行的环境中。在我设定之后

NLS_LANG=RUSSIAN_RUSSIA.UTF8
我可以在不失真的情况下插入unicode字符。 要使其生效,可能需要重新启动(db或OS或两者)。我在docker中运行Oracle XE db,所以 我不得不将
-e NLS_LANG=rusian_rusia.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

您是否尝试将备份数据类型更改为?我没有更改数据类型的选项。您是否尝试将备份数据类型更改为?我没有更改数据类型的选项。