我尝试在Oracle 11g中插入阿拉伯字符,但是数据是以问号形式插入的。我到处寻找,似乎我必须改变字符编码……但我不确定它会如何影响我的数据库,以及它是否会影响我的数据库。有什么需要帮忙的吗?
UPDATE LAM_INVESTMENT
SET INVESTMENT='ل'
WHERE KEY=11;我尝试从SQL developer中进行更新,也是同样的结果。
发布于 2015-12-10 04:58:54
首先,检查数据库是否能够通过以下方式存储阿拉伯字符
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)不会影响数据库中的任何现有数据。
发布于 2015-12-10 04:54:56
您可以尝试使用函数UNISTR和unicode 0644进行更新,以绕过Oracle客户端配置(如果它们不支持Unicode):
UPDATE LAM_INVESTMENT
SET INVESTMENT=UNISTR('\0644')
WHERE KEY=11;它可能工作,也可能不工作,这取决于列投资的数据类型和您的字符集(或国家字符集)。
发布于 2015-12-10 12:46:56
如果您的列类型是nvarchar,您是否尝试过使用下一个查询:
UPDATE LAM_INVESTMENT
SET INVESTMENT=N'ل'
WHERE KEY=11;我的韩语也有同样的情况。希望这种方法对你的帮助和对我的帮助一样大。
https://stackoverflow.com/questions/34188292
复制相似问题