首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在oracle 11g中插入阿拉伯字符

问在oracle 11g中插入阿拉伯字符
EN

Stack Overflow用户
提问于 2015-12-10 04:24:21
回答 3查看 9.9K关注 0票数 2

我尝试在Oracle 11g中插入阿拉伯字符,但是数据是以问号形式插入的。我到处寻找,似乎我必须改变字符编码……但我不确定它会如何影响我的数据库,以及它是否会影响我的数据库。有什么需要帮忙的吗?

代码语言:javascript
复制
UPDATE LAM_INVESTMENT
SET INVESTMENT='ل'
WHERE KEY=11;

我尝试从SQL developer中进行更新,也是同样的结果。

EN

回答 3

Stack Overflow用户

发布于 2015-12-10 04:58:54

首先,检查数据库是否能够通过以下方式存储阿拉伯字符

代码语言:javascript
复制
SELECT * 
from NLS_DATABASE_PARAMETERS
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

如果你得到像AL32UTF8、AL16UTF16或WE8ISO8859P6这样的值,那就没问题了,DB能够存储这些字符。

在SQL Developer中,转到Tools / Preferences / Environment / Encoding并选择UTF-8。

将环境变量设置为NLS_LANG=ARABIC_AMERICA.AL32UTF8或类似值,您也可以执行NLS_LANG=.AL32UTF8以保留默认/现有语言和区域。或者,您也可以在注册表的HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG ( 32位)中设置is。HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG ( 64位)。

那么它应该是有效的。

更改本地字符集(即NLS_LANG)不会影响数据库中的任何现有数据。

票数 1
EN

Stack Overflow用户

发布于 2015-12-10 04:54:56

您可以尝试使用函数UNISTR和unicode 0644进行更新,以绕过Oracle客户端配置(如果它们不支持Unicode):

代码语言:javascript
复制
UPDATE LAM_INVESTMENT
SET INVESTMENT=UNISTR('\0644')
WHERE KEY=11;

它可能工作,也可能不工作,这取决于列投资的数据类型和您的字符集(或国家字符集)。

Unicode table reference

票数 0
EN

Stack Overflow用户

发布于 2015-12-10 12:46:56

如果您的列类型是nvarchar,您是否尝试过使用下一个查询:

代码语言:javascript
复制
UPDATE LAM_INVESTMENT
SET INVESTMENT=N'ل'
WHERE KEY=11;

我的韩语也有同样的情况。希望这种方法对你的帮助和对我的帮助一样大。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34188292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档