重音字母和 sql plus/AIX
Posted
技术标签:
【中文标题】重音字母和 sql plus/AIX【英文标题】:accented letters and sql plus/AIX 【发布时间】:2015-06-17 13:11:31 【问题描述】:我有一个在 sql developer 中修改的 plsql 脚本(编码 = UTF8)。我使用 Filezilla(传输二进制文件)将我的脚本放在服务器上。在服务器上,NLS_LANG 是 AMERICAN_FRANCE.WE8ISO8859P1。
在我的脚本中我添加了:
ALTER SESSION SET NLS_LANG=FRENCH_FRANCE.UTF8;
我在 sql plus 会话中启动脚本:字符显示不正确。
我怎样才能让它工作?
谢谢
在启动 sql 文件的 putty 会话中,我写了这个:
$ORACLE_HOME/bin/sqlplus id/psw@$ORACLE_SID @$P_SQL/myfile.sql
在文件中,例如显示是这样的:
center 'à è é ê ô à ë î ï ù' skip 1 -
在一个线轴内。
【问题讨论】:
脚本的作用是什么?向我们展示读取/更改字符的行。你是在服务器上还是在客户端上启动 sqlplus? myfile.sql 是做什么的?如果您使用的是 putty,请确认您正在服务器上启动 myfile.sql。您是在服务器上修改 myfile.sql 还是在桌面上使用 sql developer? 在我的桌面上使用 sql developer。 sql的目的是假脱机一些文件并显示一些东西 如果在启动 SQL*Plus 之前在服务器上将 NLS_LANG 设置为 UTF8 会发生什么?您是否在 SQL*Plus 会话中或查看假脱机文件时看不到正确的字符? 【参考方案1】:首先putty的设置Windos/Translation/Remote_character_set和环境变量LC_CTYPE要匹配,例如:ISO-8859-1和fr_FR.ISO8859- 1;或 UTF-8 和 fr_FR.UTF-8
注意:LC_CTYPE可以远程设置(putty:Connection/Data/Environment_variables),如果/etc/ssh/sshd_config允许 if (AcceptEnv)
如果您的 AIX 支持所选字符集也没有什么坏处,请使用 locale -a
如果/当每个字符都在 ksh/bash/mc/etc 中有效,那么您可以尝试使用 Oracle:将 NLS_LANG 设置为 american_america.WE8ISO8859P1 或 american_america.AL32UTF8 (与 LC_CTYPE 和翻译同步)
PS:我认为您应该在启动任何 Oracle 程序之前设置 NLS_LANG,ALTER SESSION 不会更改字符集。
【讨论】:
【参考方案2】:尝试将 NLS_LANG 设置为 AMERICAN_AMERICA.US8PC437。
在此处查看我对类似问题的回答:
when-insert-persian-character-in-oracle-db-i-see-the-question-mark
【讨论】:
以上是关于重音字母和 sql plus/AIX的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Collation 或 PHP 端正确显示重音字母