我正在尝试在Oracle 11g中插入阿拉伯字符,但是数据是作为问号插入的。我四处搜索,似乎我必须更改字符编码...但我不确定如何,以及它是否会影响我的数据库。有什么帮助吗?
UPDATE LAM_INVESTMENT
SET INVESTMENT='ل'
WHERE KEY=11;
我尝试从SQL开发人员中进行更新,也是同样的结果。
答案 0 :(得分:1)
首先检查您的数据库是否能够通过
存储阿拉伯字符SELECT *
from NLS_DATABASE_PARAMETERS
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
如果您获得AL32UTF8
,AL16UTF16
或WE8ISO8859P6
等值,那么您就可以存储此类字符了。
在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;
根据列投资的数据类型和您的字符集(或国家字符集),它可能有效也可能无效。
答案 2 :(得分:0)
如果列类型为nvarchar,您是否尝试使用下一个查询:
ST_GeographyFromText()
我和韩语有同样的情况。希望这种方法可以帮助你,也帮助我。