SQL Developer脚本输出:语言英语+ utf-8字符(“ő”,“ű”)

时间:2018-07-06 09:54:54

标签: oracle plsql utf-8 oracle-sqldeveloper

如何在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)

2 个答案:

答案 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开发人员中编码设置,但不足以更改设置。也必须重新启动。

步骤和结果:

  
      
  1. 工具-首选项-环境-编码= ASCII

  2.   
  3. 重新启动

  4.   
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;
  
      
  1. 工具-偏好设置-环境-编码= UTF-8
  2.   
begin dbms_output.put_line('űőö'); end;
/

-- result: '???'
  
      
  1. 重新启动sqldeveloper
  2.   
begin dbms_output.put_line('űőö'); end;
/

-- result: '???'