至少,我有一个数据库,我不允许更改任何内容,所以我必须处理给定的字符集。
这是数据库的字符集:
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');
它的作用与预期的一样。
我真的很感激一些帮助。
谢谢, 安迪
答案 0 :(得分:0)
我不是perl专家。但NLS_LANG
参数通常需要类似
NLS_LANG = GERMAN_GERMANY.AL32UTF8
不仅仅是AL32UTF8
。 NLS_LANG
是否设置在您环境中的其他位置?或者perl脚本是唯一设置它的东西吗?