0

最初は、何も変更できないデータベースがあるので、指定された文字セットを処理する必要があります。

データベースの文字セットは次のとおりです。

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');

期待通りに動作します。

助けていただければ幸いです。

ありがとう、アンディ

4

1 に答える 1

0

私はperlの専門家ではありません。しかし、NLS_LANGパラメータは通常、次のようにする必要があります

NLS_LANG = GERMAN_GERMANY.AL32UTF8

だけではありませんAL32UTF8NLS_LANG環境内の別の場所に設定されていますか? それとも、それを設定しているのはperlスクリプトだけですか?

于 2012-08-31T10:59:42.307 に答える