重音字母和 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-1fr_FR.ISO8859- 1;或 UTF-8fr_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.WE8ISO8859P1american_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中的波兰语和德语重音字母

在带有重音字母的语言中转义 HTML

OrderBy 忽略重音字母

MySQL Collat​​ion 或 PHP 端正确显示重音字母

如何使用正则表达式避免在 unicode 重音后大写字母 [重复]

Javascript 中基于区域设置的排序,以预定义的方式对重音字母和其他变体进行排序