编码德语字符

时间:2013-05-22 13:59:35

标签: oracle perl encoding character-encoding

我需要将load data一些perl生成的文件导入到oracle数据库。 Perl脚本获取一个网页并编写csv文件。

这是一个简化的脚本:

use File::Slurp;     
my $c= ( $user && $passwd )
        ? get("$protocol://$user:$passwd\@$url")
        : get("$protocol://$url");

    write_file("$VZ_GET/$FileTS.$typ.csv",$c);

这是网页上的一个示例行:

5052;97;Jan;Ihrfelt 5053;97;Jari;Honko 5121;97;Katja;Keitaanniemi 5302;97;Ola;Södermark 5421;97;Sven;Sköld 5609;97;Peter;Näslund 

网页内容保存在var $ c。

这是csv文件的示例行:

5053;97;Jari;Honko

这是一个加载命令:

LOAD DATA
INTO TABLE LIQA
TRUNCATE
FIELDS TERMINATED BY ";"
(
    LIQA_ANALYST_ID,
    LIQA_FIRM_ID,
    LIQA_ANALYST_FIRST_NAME,
    LIQA_ANALYST_LAST_NAME,
    LIQA_TS_INSERT  DATE 'YYYYMMDDHH24MISS'
)

命令SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';返回AL32UTF8

生成的csv文件被识别为UTF-8 Unicode text

无论如何我不能导入德语字符。在csv文件中,它们仍然是正确的。但在数据库中并非如此。

我也试过像这样转换$ c:

$c = encode("iso-8859-1", $c); 

生成的csv文件将被识别为UTF-8 Unicode text

我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

我已经解决了它:

$c = decode( 'utf-8', $c );
$c = encode( 'iso-8859-1' , $c );