我们有一个应用程序,用于存储客户信息和从桌面应用程序创建的条目。我们还存储客户的阿拉伯名字,并正确保存并正确检索。
现在,我们有一个查询数据的需求,但是检索到的数据是垃圾字符。
执行以下查询时,我们得到:
SELECT *
FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET'
NLS_CHARACTERSET = AR8ISO8859P6
NLS_NCHAR_CHARACTERSET = AL16UTF16
使用以下查询从表中查询数据时:
SELECT DUMP(LONG_NAME_ARAB,1016) FROM CIF WHERE CIF_NO=47;
我们得到以下数据:
Typ=1 Len=24 CharacterSet=AR8ISO8859P6: bf,bf,bf,bf,bf,20,bf,bf,bf,bf,20,bf,bf,bf,bf,bf,20,bf,bf,bf,bf,bf,bf,bf
我们尝试使用以下查询转换字符集以获取阿拉伯语数据:
SELECT UTL_RAW.cast_to_varchar2(UTL_RAW.CONVERT (
UTL_RAW.cast_to_raw (cif.LONG_NAME_ARAB),
'AMERICAN_AMERICA.AR8ISO8859P6',
'AMERICAN_AMERICA.AR8MSWIN1256'
))
FROM CIF WHERE CIF_NO=47
但不幸的是,它只返回垃圾字符。我们尝试使用不同的方法和字符集,但它只返回垃圾字符。
如果有人可以帮助我们获取阿拉伯语数据,我们将不胜感激,因为应用程序以阿拉伯语显示数据,而我们没有源代码来检查他们如何检索数据。