如何在SQL Developer脚本输出语言中设置英语,但是使用非英语的特殊字符出现('ő','ű')。
我认为这是一个编码问题。我设置了utf-8编码,并且在查询结果中正常运行(例如,从表中进行选择的结果显示字符为'őűö'),但是在脚本输出中显示为'?'而不是“ő”(例如,在dbms_serveroutput.put_line或raise_application_error消息中)。高
例如
select * from test;
A
---
űőö
(可以)
declare
char varchar2(20);
begin
select * into char from test;
dbms_output.put_line(char);
end;
/
??ö
PL/SQL procedure successfully completed
(?ö代替űőö)
我的设置:
PARAMETER VALUE
NLS_RDBMS_VERSION 12.2.0.1.0
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8
NLS_LANGUAGE AMERICAN
SQL开发人员: 工具-首选项-环境-编码:UTF-8
Regedit: HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ KEY_OraDB12Home1 NLS_LANG:AMERICAN_UNITED KINGDOM.AL32UTF8
(SQL开发人员版本18.1.0.095)
答案 0 :(得分:1)
这对我有用:
select unistr( '\0169\00f5\00f6' ) from dual;
UNI
---
ũõö
declare
c varchar2(20);
begin
select unistr( '\0169\00f5\00f6' ) into c from dual;
dbms_output.put_line( c );
end;
/
UNI
---
ũõö
我正在使用相同版本的SQLDev和AL32UTF8数据库。 test
表的定义是什么?
答案 1 :(得分:0)
关键是首选项-在SQL开发人员中编码设置,但不足以更改设置。也必须重新启动。
步骤和结果:
工具-首选项-环境-编码= ASCII
重新启动
Microsoft.Office.Interop.Word.Document doc = wordApp.CompareDocuments(doc1, doc2, WdCompareDestination.wdCompareDestinationNew, WdGranularity.wdGranularityWordLevel,
true, true, true, true, true, true, true, true, true, true, "", false);
bool anyChanges = doc.Revisions.Count > 0;
- 工具-偏好设置-环境-编码= UTF-8
begin dbms_output.put_line('űőö'); end;
/
-- result: '???'
- 重新启动sqldeveloper
begin dbms_output.put_line('űőö'); end;
/
-- result: '???'