【发布时间】:2012-09-15 18:43:21
【问题描述】:
我在从 db 表中提取数据时遇到字符差异问题。
我已经编写了一个 PL/SQL 代码来从我的 db 表中将一些数据假脱机到 .txt 文件,并使用 unix shell 运行这个 sql,但是当我获取假脱机文件时,结果集是从一个在后端。
例如:
At back end: SADETTÝN
In Spooled txt file : SADETTŸN
如果您查看Y 字符,它是一个改变的字符。我想以后端的方式保留所有字符。
我的数据库的字符集:
SELECT * FROM v$nls_parameters WHERE parameter LIKE 'NLS%CHARACTERSET'
PARAMETER VALUE
NLS_CHARACTERSET WE8ISO8859P1
NLS_NCHAR_CHARACTERSET WE8ISO8859P1
和 Unix NLS_LANG 参数:
$ echo $NLS_LANG
AMERICAN_AMERICA.WE8ISO8859P1
我尝试将 NLS_LANG 参数更改为 WE8ISO8859P9(土耳其字符集),但没有帮助!
谁能告诉我这个问题的解决方案?
【问题讨论】:
-
您的数据库的字符集可能是这样,但不能保证您用于假脱机的终端可以支持
Ý,或者您的操作系统可以。 -
你是如何生成文本文件的?你在用
UTL_FILE吗?还是你在做别的事情?您是否在十六进制编辑器中打开了文件,以查看在文本编辑器中被解释为 Ÿ 的文件中的实际十六进制值? -
@JustinCave 我在 SQL*PLUS 中使用简单的假脱机概念。我会尝试使用十六进制编辑器打开我的文件并让你知道。谢谢。
-
要查看 SQL 中的字符代码,您可以“从表中选择转储(column_name)”。
-
@Justin Cave 用简短的解释编辑了我的问题。提前致谢。