[Perl]Net::LDAPを使ったEntry追加の際の日本語文字化け

前回の記事では属性に空の数値があると、配列上ずれてno values for attributeエラーになってしまったということですが、今回はOpenLDAPにadd/replaceされた属性の値が日本語の場合に文字化けしてしまうという課題の解決について記載しています。

前提:

      Perlスクリプトの内部文字コードはutf8
      受け取るデータの文字コードもutf8
      LDAPサーバーはCentOS上に構築されたOpenLDAP
      LDAPサーバー(OpenLDAP)へのBINDはSimple Bind

以下のコードの場合、errorMessageは空で返るし、returnCodeも0で返ってくる。
しかし、OpenLDAPに登録されたのはApache Directory Studioで見ても文字は化けしているし、参照するためのWeb画面でも文字化けしてしまう。

もろもろ試したり、調べたりした結果、OpenLDAPは基本的に文字をISO-8859-1で保存しているようで、以下のようにスクリプト内でISO-8859-1にEncodeすることで文字化けを回避できるようになった。

しかし、OpenLDAPの仕様を探してみたんだけど、ISO-8859-1で保存されるという記述が見つからず、いまさらだけどUTF-8でデータストアする方法はないのかな?と疑問がわいたので、もしかしたらいつか調べてみるかもしれない。とりあえず、今はこれで解決しているので、これで良しとしておく。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です