首先,我有一个数据库,不允许我更改任何内容,因此我必须处理给定的字符集。
这是数据库的字符集:
SELECT * from NLS_DATABASE_PARAMETERS
WHERE parameter IN ( 'NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET');
NLS_LANGUAGE GERMAN
NLS_TERRITORY GERMANY
NLS_CHARACTERSET WE8ISO8859P15
当连接到这个数据库(使用 perl)时,我将连接字符集设置为WE8ISO8859P15
. 我认为到目前为止我做得对。:)
现在是棘手的部分,它失败了。数据库中的数据需要转换为 utf8,才能在我使用数据的浏览器中正确显示。
据我了解,设置 NLS_LANG 应该为我处理这个问题吗?设置时,它应该将WE8ISO8859P15
数据(动态)转换为utf8
,对吗?
因此,在 perl 中建立连接之前,我将环境变量设置为
$ENV{'NLS_LANG'} = ".AL32UTF8"
但是没有任何改变,我做错了吗?
手动转换数据时,在 perl 脚本中如下所示:
Encode::from_to($data, 'iso-8859-15', 'utf8');
它的工作如预期。
我真的很感激一些帮助。
谢谢,安迪