Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在Oracle数据库中正确插入商标等特殊字符_Database_Oracle_Character Encoding_Oracle Sqldeveloper_Nls - Fatal编程技术网

Database 如何在Oracle数据库中正确插入商标等特殊字符

Database 如何在Oracle数据库中正确插入商标等特殊字符,database,oracle,character-encoding,oracle-sqldeveloper,nls,Database,Oracle,Character Encoding,Oracle Sqldeveloper,Nls,我有一个Oracle数据库。我必须执行一些插入脚本来填充nvarchar2列。insert语句包括一些特殊字符,如“(左引号)、“(右引号),™(商标标志) 我在SQLDeveloper编辑器上运行查询。但特殊字符替换为问号,如下所示: select * from myTable; Column1 Column2 ------ ------------------------------ 1 Lorem Ipsum? Sed ?dolor sit amet

我有一个Oracle数据库。我必须执行一些插入脚本来填充nvarchar2列。insert语句包括一些特殊字符,如“(左引号)、“(右引号),™(商标标志)

我在SQLDeveloper编辑器上运行查询。但特殊字符替换为问号,如下所示:

select * from myTable;

Column1     Column2
------      ------------------------------
1           Lorem Ipsum? Sed ?dolor sit amet?
但当我使用SQLDeveloper GUI向表中添加新行时,一切都很好

数据库NLS参数如下所示:

SELECT * FROM NLS_DATABASE_PARAMETERS where PARAMETER in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

PARAMETER               VALUE
------------            ------------
NLS_CHARACTERSET        WE8ISO8859P9
NLS_NCHAR_CHARACTERSET  AL16UTF16

如何正确插入上面提到的字符?

对于可能无法在不同环境中使用的Unicode字符,请使用
UNISTR

create table myTable ( column1 number, column2 nvarchar2(50) );

insert into myTable (column1, column2)
values(1, 'Lorem Ipsum' || unistr('\2122') || ' Sed ' ||
    unistr('\201C') || 'dolor sit amet' || unistr('\201D'));

对可能无法在不同环境中使用的Unicode字符使用
UNISTR

create table myTable ( column1 number, column2 nvarchar2(50) );

insert into myTable (column1, column2)
values(1, 'Lorem Ipsum' || unistr('\2122') || ' Sed ' ||
    unistr('\201C') || 'dolor sit amet' || unistr('\201D'));

在运行第一个insert的操作系统上,环境变量NLS_LANG设置为什么?@sandman在同一操作系统(Windows 10)和同一台机器上执行insert查询。我没有看到任何名为NLS_LANGtry的环境变量将NLS_LANG设置为AMERICAN_AMERICA。WE8ISO8859P9设置NLS_LANG变量无法解决问题。仍然存在问号您没有尝试
插入myTable(第1列,第2列)值(1,N'Lorem Ipsum)吗™ Sed“dolor sit amet”)?在运行第一个insert的操作系统上,环境变量NLS_LANG设置为什么?@sandman在同一操作系统(Windows 10)和同一台机器上执行insert查询。我没有看到任何名为NLS_LANGtry的环境变量将NLS_LANG设置为AMERICAN_AMERICA。WE8ISO8859P9设置NLS_LANG变量无法解决问题。仍然存在问号您没有尝试
插入myTable(第1列,第2列)值(1,N'Lorem Ipsum)吗™ Sed“dolor sit amet”)?谢谢,它只适用于一个查询。但我不会只运行一个插入脚本。数以千计的insert查询由第三方应用程序自动生成。此外,我还有一个Java应用程序,其中有一些insert查询。如果我没有错的话,我们可以用EncodingThank解决这个问题。谢谢,它只适用于一个查询。但我不会只运行一个插入脚本。数以千计的insert查询由第三方应用程序自动生成。此外,我还有一个Java应用程序,其中有一些insert查询。如果我没有错的话,我们可以用编码来解决这个问题