在oracle 11g中插入阿拉伯字符 [英] Inserting arabic characters in oracle 11g
问题描述
我正在尝试在 Oracle 11g 中插入阿拉伯字符,但是数据被插入为问号.我四处搜索,似乎我必须更改字符编码...但我不确定如何以及它是否会影响我的数据库.有什么帮助吗?
I am trying to insert Arabic characters in Oracle 11g, however the data is being inserted as question marks. I searched around and it seems i have to change the character encoding... But i am not sure how, and whether will it affect my database. Any help please ?
UPDATE LAM_INVESTMENT
SET INVESTMENT='ل'
WHERE KEY=11;
我尝试从 SQL 开发人员内部进行更新,结果也是一样.
I tried updating from within SQL developer, also same outcome.
推荐答案
首先检查你的数据库是否能够存储阿拉伯字符
First of all check if your database is capable to store Arabic characters by
SELECT *
from NLS_DATABASE_PARAMETERS
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
如果你得到像 AL32UTF8
、AL16UTF16
或 WE8ISO8859P6
这样的值,你就没事,DB 能够存储这些字符.
If you get values like AL32UTF8
, AL16UTF16
or WE8ISO8859P6
you are fine and DB is able to store such characters.
在 SQL Developer 中,转到工具/首选项/环境/编码并选择 UTF-8
.
In SQL Developer go to Tools / Preferences / Environment / Encoding and select 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 位).
Set an Environment Variable to NLS_LANG=ARABIC_AMERICA.AL32UTF8
or similar, you can also do NLS_LANG=.AL32UTF8
in order to keep default/existing language and territory. Alternatively you can set is also in your Registry at HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(for 32 bit), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(for 64 bit).
那么它应该可以工作了.
Then it should work.
更改本地字符集(即 NLS_LANG)不会影响数据库中的任何现有数据.
Changing your local character set (i.e. NLS_LANG) does never affect any existing data in database.
这篇关于在oracle 11g中插入阿拉伯字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!