最初は、何も変更できないデータベースがあるので、指定された文字セットを処理する必要があります。
データベースの文字セットは次のとおりです。
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');
期待通りに動作します。
助けていただければ幸いです。
ありがとう、アンディ