栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将国家字符插入到Oracle NCHAR或NVARCHAR列中不起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将国家字符插入到Oracle NCHAR或NVARCHAR列中不起作用

编辑:请注意,在Oracle上处理UTF的最佳方法是使用数据库字符集AL32UTF8创建数据库,并使用普通的varchar2列。使用nchar列的问题之一是,默认情况下将参数作为nchar发送时,oracle无法为普通char
/ varchar2列使用索引。

无论如何:如果您不能转换数据库:


首先,unipre字面量需要以“ n”作为前缀,如下所示:

select n'Language - Språk - Język' from dual;

*)8位编码无法处理此文本

不幸的是,这还不够。

由于某种原因,数据库客户端的默认行为是将所有字符串文字转换为数据库字符集,这意味着即使在数据库看到字符串之前,值也将被更改。

客户端需要一些配置,以便能够将Unipre字符插入NCHAR或NVARCHAR列:

Unix上的SQL Plus

这些environemnet变量将Unix环境和sqlplus设置为使用UTF-8文件,还将sqlplus配置为以unipre发送字符串文字。

NLS_LANG=AMERICAN_AMERICA.AL32UTF8LC_CTYPE="en_US.UTF-8"ORA_NCHAR_LITERAL_REPLACE=true

(en_US.UTF-8用于Solaris-Linux或其他系统可能需要不同的字符串,用于

locale -a
列出支持的语言环境。)

JDBC驱动程序

使用Oracle JDBC驱动程序的应用程序需要定义以下系统属性,才能以unipre发送字符串文字。

-Doracle.jdbc.defaultNChar=true -Doracle.jdbc.convertNcharLiterals=true

SQL开发人员

找到sqldeveloper.conf,并添加以下行:

AddVMOption -Doracle.jdbc.defaultNChar=true AddVMOption -Doracle.jdbc.convertNcharLiterals=true

Microsoft Windows上的SQL Plus

我没有尝试过Microsoft
Windows或Toad上的SQLplus是否完全可以处理utf-8。Sqlplusw.exe可能会这样做,而以下注册表设置可能会成功。

NLS_LANG=AMERICAN_AMERICA.AL32UTF8ORA_NCHAR_LITERAL_REPLACE=true


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号