Oracle Spool无法显示特殊字符

时间:2017-01-17 13:50:11

标签: sql oracle

我使用以下代码生成txt文件。代码工作正常,但某些字符存在问题。我正在使用Oracle。 无法显示é,á等字符。

set echo off
set verify off
set termout on
set heading off
set pages 50000
set feedback off
set newpage none
set linesize 1000
set serveroutput off
set pagesize 0
set trimout on
set trimspool on


spool Weekly_Members_Vendors.txt

select   ''||Unique_ID||''||Name||''||Alt_Name||''|| Entity_Type||''||Party_Type||''||Reference_#||''||Addr1||''||Addr2||''||
     Addr3||''||Town||''||County||''||Postcode||''||Country||''||ALT_ADDRESS1||''||ALT_ADDRESS2||''||
     ALT_ADDRESS3||''||ALT_TOWN||''||ALT_COUNTY||''||ALT_POST_CODE||''||ALT_COUNTRY||''||NATIONALITY||''||
     DOB||''||INDIVIDUAL_ID||''||INDIVIDUAL_ID_TYPE||''||COUNTRY_OF_REGISTRATION||''||COMPANY_ID||''||COMPANY_ID_TYPE||''||
     SOURCE_COUNTRY||''||SOURCE_SYSTEM||''||TRANSACTION_TYPE
from     dbo.Temp_Weekly_Export_File;



spool off;

exit

1 个答案:

答案 0 :(得分:2)

我假设你在Windows上的SQL * Plus中运行它。

在这种情况下,请按chcp

检查命令行窗口的代码页

通常它应该是CP437或CP850(取决于您是在欧洲还是美国)。

然后在启动SQL * Plus之前相应地设置NLS_LANG值,或者设置为环境变量(例如set NLS_LANG=WE8PC850

在注册表中(HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG表示32位,分别为HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG表示64位)

您还可以更改命令行窗口的代码页,例如chcp 1252

另见这些答案:

Unicode characters in Windows command line - how?

OdbcConnection returning Chinese Characters as "?"