【问题标题】:Why accents are not recognized in sqlplus为什么在 sqlplus 中无法识别重音符号
【发布时间】:2021-03-05 09:52:12
【问题描述】:

我有一个主题表,其主题字段包含以下行:

theme
-----
pays
économie
associée

我有这个基本查询:

SELECT * FROM SUBJECT WHERE THEME='associée';

查询在 Sql developer 中运行良好,并将预期的行返回给我。 另一方面,在 Sqlplus 下它返回 0 行给我(这是不正常的)。 我的印象是该查询无法识别 sqlplus 下的重音字符。我正在考虑一个 NLS_LANG 问题,但我不知道。请帮忙。

提前谢谢你。

【问题讨论】:

  • 如果您选择这些行,它们会是什么样子?
  • 我的帖子能回答你的问题吗?

标签: sql oracle sqlplus


【解决方案1】:

将您的操作系统会话的NLS_LANG 变量设置为例如ENGLISH_AMERICA.AL32UTF8 的值,然后重新启动您的SQL Developer。之后重试。

如果这没有帮助,请尝试按如下方式运行您的查询:

SELECT * FROM SUBJECT WHERE THEME = n'associée';

注意字符串文字前的n。那是 nvarchar2 字符串文字修饰符。根据您的数据库字符集/国家字符集设置,您可能需要明确说明您要查询的值是“国家字符集”,而不仅仅是“常规字符集”。

如果这没有帮助,那么在针对 Oracle DB 处理重音字符时,实际上还有许多其他变量会发挥作用。

解释: 您的 SQL 开发人员确实识别重音...前提是您的 Oracle DB 会话使用与您的数据库字符集兼容的字符集。并且您的 Oracle DB 会话的字符集可以在操作系统级别(通过操作系统环境变量)或可能(!)直接在 SQL Developer 的选项中设置。唉,上述众多其他因素可能包括(但不限于):

  • 您的操作系统区域设置,
  • 您的操作系统 Unicode 支持,
  • 您的 Oracle 客户端软件 (SQL Developer) Unicode 支持,
  • 您的 Java JDK/JRE 的 Unicode 支持,
  • 您的 JDBC 驱动程序的 Unicode 支持,
  • 您的其他 *DBC 驱动程序的 Unicode 支持(如果有更多支持)。

可悲的是,您的键盘和 Oracle 数据库之间的接口越多,它们中的一个就越有可能严重影响您的字符集转换。

所以,我们只希望前两个提示对你有用,否则我无法帮助你(那么容易)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多