【问题标题】:Issue with spooling French text from Unix从 Unix 假脱机法语文本的问题
【发布时间】:2019-09-10 08:44:36
【问题描述】:

我们正在将如下所示的数据假脱机,其中包括从查询中检索到的法语文本到来自 .sql 文件的文本文件中,并且我们正在执行来自 Unix 的 .sql 文件。

奇怪的是,当我们从我同事的机器上执行.sql 文件时,使用相同的凭据连接到同一台 Unix 服务器,法语文本(带有所有特殊字符)正在假脱机,但它没有发生(所有特殊字符消失)从任何其他机器(具有相同凭据的同一 Unix 服务器)。

SET ARRAY 4000
SET TERM OFF
SET WRAP OFF
SET FLUSH OFF
SET TAB OFF
SET HEAD OFF
SET VERIFY OFF
SET TAB OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SET LINESIZE 1999
SET TRIMSPOOL ON
SET TRIMOUT ON

SPOOL %path%

SELECT * FROM TEMP_TABLE;

SPOOL OFF

我看不出有什么不同。

请告诉我我需要检查什么以确保它在每台机器上都能正常工作,或者我可以做的任何事情来在假脱机时获取这些特殊字符。

【问题讨论】:

  • 您如何看待差异 - 那些用户查看他们创建的文件,或查看彼此,或查看十六进制转储?或者它们是否被转移到其他地方进行查看?是否所有用户都使用相同的操作系统语言/区域设置、字符集、终端仿真器 CS 翻译进行连接。 ETC。? (如果所有都连接到同一个 Unix 帐户,那么大概在这一点上 NLS_LANG 和其他环境变量是相同的,但也许也验证一下......)
  • %path% 看起来像 Windows 而不是 Unix。

标签: oracle shell unix


【解决方案1】:

使用locale charmapecho $LANG 检查终端的编码

然后在运行 sqlplus 之前相应地设置您的NLS_LANG,例如

$ locale charmap
UTF-8
$ NLS_LANG=.AL32UTF8
$ export NLS_LANG
$ sqlplus ...

【讨论】:

  • 您好 Domscheit/Alex- 感谢您的时间和回复。看起来我的同事在进行一些测试时在该特定会话中设置了 NLS_LANG=AMERICAN_AMERICA.AL32UTF8,这造成了一些混乱,以上对我有用。谢谢你,Pradeep
猜你喜欢
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2012-11-21
  • 2018-09-26
  • 2015-09-07
  • 1970-01-01
相关资源
最近更新 更多