有没有办法在查询时将AR8ISO8859P6字符集数据转换为AR8MSWIN1256?

问题描述 投票:0回答:0

我们有一个应用程序,用于存储客户信息和从桌面应用程序创建的条目。我们还存储客户的阿拉伯名字,并正确保存并正确检索。

现在,我们有一个查询数据的需求,但是检索到的数据是垃圾字符。

执行以下查询时,我们得到:

    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

但不幸的是,它只返回垃圾字符。我们尝试使用不同的方法和字符集,但它只返回垃圾字符。

如果有人可以帮助我们获取阿拉伯语数据,我们将不胜感激,因为应用程序以阿拉伯语显示数据,而我们没有源代码来检查他们如何检索数据。

oracle oracle11g oracle10g
© www.soinside.com 2019 - 2024. All rights reserved.