• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UserGetAttributesの第7引数が文字化けするのですが)

UserGetAttributesの第7引数が文字化けするのですが

このQ&Aのポイント
  • WindowsNT 4.0, ActivePerl 623, Win32::NetAdminを使っています。
  • NTサーバ上のユーザの属性を取りだすスクリプトの中で UserGetAttributes 関数を使ったところ、文字化けが発生します。
  • 文字化けした戻り値をsjis等に変換できるモジュールについて知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

xE3 x81 x82 のコードを見てみた所、UTF8コードのようです 多分jperlやjcode.plではUTF8までは対応していないと思いますので Win32APIのWideCharToMultiByte()とMultiByteToWideChar() APIを使って SJIS<=>UTF8変換をする必要があると思います 多分ActivePerlであればWin32APIを呼び出す事が出来ると思いますのでその辺を参考にしてみてください

参考URL:
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpwinpf/_win32_widechartomulti
moon_poco
質問者

お礼

この回答をみるまで,UTF8コードというものの存在を知りませんでした。 早速UTF8というキーワードをもとに検索しましたところ, UTF8 -> SJIS変換をサポートしている Jcode.pm というものを見つけることができました。これにより,今回の問題はクリアできました。 Win32APIの利用の方は,少しがんばってみます。ありがとうございました。

その他の回答 (1)

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

perlで日本語を扱う場合、SJISでは漢字の2バイト目が'\'の文字があり、これが原因で化けたりします 対処するにはJIS、またはEUCコードで漢字を扱う必要があります 漢字コードを変換するモジュールにjcode.plというものがあり、これを使う事で各コード変換をする事が出来ます もしくはjperlを使えば漢字を正しく扱う事が出来るようです

moon_poco
質問者

補足

教えて頂きました jcode.pl なるものを早速準備して試してみました。 「あ」という文字を各コードに変換させたところ, sjis : x82 xA0 jis : x1B x24 x42 x24 x22 x1B x28 x42 euc : xA4 xA2 となりました。いっぽう,例の関数では,「あ」は xE3 x81 x82 という値になり,先の3つのコードとは一致しないみたいです。 jperl なるものは,まだ手に入れておりません。準備でき次第テストしてみます。

関連するQ&A