SQLPLUS 在找到非英语的其他语言的数据时将 ¿¿¿

SQLPLUS writes ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ to csv file when finds a data in other languages than English

我正在尝试将数据从 Oracle table 导出到 csv 文件。 table 的其中一列定义为 CLOB 数据类型,并且数据以多种语言存储。

例如,

create table test1
( col1 number,
col2 clob);

Insert into test1 values ( 1, '使用 Excel 数据挖掘外接程序执行购物篮分析');

select * from test1;

执行并截取自 SQL 开发人员的屏幕截图:

当我 运行 下面的脚本来自 SQLPlus

set echo off
set newpage none
set feedback off
set pages 0
spool C:\Users\venkat\Desktop\data.csv
select 'col1,col2' from dual;
select col1||',' || col2
from test1; 
spool off;

文件中的数据是这样的

col1,col2
1,¿¿ Excel ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿

期待在此论坛中获得一些帮助。我想查看数据库中的数据。

编辑:抱歉,我应该提到环境 Windows。

有关此 NLS 语言参数的更多信息,请点击此处

Select * from nls_database_parameters
 where parameter IN ('NLS_LANGUAGE','NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

结果是

NLS_LANGUAGE AMERICAN NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

您必须设置 NLS_LANG 环境变量以告知 SQLPlus 使用何种字符编码;指定可以表示预期字符的字符编码。参见例如“Running SQLPlus with bash causes wrong encoding" on Server Fault.

在 Bash 中,您可以像这样设置环境变量:

 export NLS_LANG="AMERICAN_AMERICA.UTF8"

在 Windows 上 cmd.exe 你会说

 set NLS_LANG=AMERICAN_AMERICA.UTF8