Database 如何在Oracle数据库中正确插入商标等特殊字符
我有一个Oracle数据库。我必须执行一些插入脚本来填充nvarchar2列。insert语句包括一些特殊字符,如“(左引号)、“(右引号),™(商标标志) 我在SQLDeveloper编辑器上运行查询。但特殊字符替换为问号,如下所示: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
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查询。如果我没有错的话,我们可以用编码来解决这个问题