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

时间:2015-12-09 20:24:21

标签: oracle oracle11g

我正在尝试在Oracle 11g中插入阿拉伯字符,但是数据是作为问号插入的。我四处搜索,似乎我必须更改字符编码...但我不确定如何,以及它是否会影响我的数据库。有什么帮助吗?

UPDATE LAM_INVESTMENT
SET INVESTMENT='ل'
WHERE KEY=11;

我尝试从SQL开发人员中进行更新,也是同样的结果。

3 个答案:

答案 0 :(得分:1)

首先检查您的数据库是否能够通过

存储阿拉伯字符
SELECT * 
from NLS_DATABASE_PARAMETERS
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

如果您获得AL32UTF8AL16UTF16WE8ISO8859P6等值,那么您就可以存储此类字符了。

在SQL Developer中,转到工具/首选项/环境/编码,然后选择UTF-8

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

然后它应该工作。

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

答案 1 :(得分:0)

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

UPDATE LAM_INVESTMENT
SET INVESTMENT=UNISTR('\0644')
WHERE KEY=11;

根据列投资的数据类型和您的字符集(或国家字符集),它可能有效也可能无效。

Unicode table reference

答案 2 :(得分:0)

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

ST_GeographyFromText()

我和韩语有同样的情况。希望这种方法可以帮助你,也帮助我。