Select returns “¿”字符

Select returns "¿" character

我的查询:

SELECT op_arv
FROM my_table@OTHER_DB

returns:

d¿identification

不应出现“¿”符号。

如果我那么运行:

SELECT 
 substr(op_arv,2,1) AS t_substr
,ascii(substr(op_arv,2,1)) AS t_ascii
,chr(ascii(substr(op_arv,2,1))) AS t_chr_ascii
,asciistr(substr(op_arv,2,1)) AS asciistr_1
FROM my_table@OTHER_DB

我得到以下输出:

¿
146
¿
[=15=]92

ASCII函数returns 146,对应的'(撇号)符号才有意义。但是如果我尝试 "CHR()" 实际值,我将得到 ¿ 而不是 '。 CHR(146) 给我正确的符号...

运行 ASCIISTR 函数将 return Unicode 值 \0092 这是一个 unicode 控制字符,而不是撇号...

我正在 运行宁 Oracle 11gR2 与 NLS_CHARACTERSET= WE8MSWIN1252。我正在(通过数据库 link)连接到 Oracle 数据库 运行 NLS_CHARACTERSET= WE8ISO8859P1.

有什么想法吗?

谢谢!

很可能您没有设置 NLS_LANG 值,Oracle 将其默认为 AMERICAN_AMERICA.US7ASCII

SQLplus从命令行继承了字符集,你可以interrogate/change命令代码页chcp然后你必须相应地设置NLS_LANG

示例:

chcp 1252
set NLS_LANG=.WE8MSWIN1252
sqlplus ...

如果您在 Linux 上工作,则使用 locale charmapecho $LANG 检索终端的编码。

不需要设置NLS_LANG等于你的数据库字符集,但是你选择的字符集必须支持你的字符