Win32::NetAdminモジュールの中の UserGetAttributes関数に関する質問です。
WindowsNT 4.0, ActivePerl 623, Win32::NetAdmin (version = 0.07)
を使っています
NTサーバ上のユーザの属性を取りだすスクリプトの中で UserGetAttributes 関数を使ったところ,この関数の第7引数に格納される "説明"という項目に全角文字がふくまれている場合には,文字化けして(2バイトの文字が3バイトになって)とりだされてしまいます。半角文字はそのままとりだすようです。
私の環境が悪いのか,それともこういった仕様なのかが判断できずにいます。
同じ経験をされた方はいらっしゃらないでしょうか。
仮に仕様によるものだとすると,文字化けした戻り値をsjis等に変換するモジュールも存在しそうなものですが,実際どこかにあるのでしょうか。
No.1
- 回答日時:
perlで日本語を扱う場合、SJISでは漢字の2バイト目が'\'の文字があり、これが原因で化けたりします
対処するにはJIS、またはEUCコードで漢字を扱う必要があります
漢字コードを変換するモジュールにjcode.plというものがあり、これを使う事で各コード変換をする事が出来ます
もしくはjperlを使えば漢字を正しく扱う事が出来るようです
この回答への補足
教えて頂きました jcode.pl なるものを早速準備して試してみました。
「あ」という文字を各コードに変換させたところ,
sjis : x82 xA0
jis : x1B x24 x42 x24 x22 x1B x28 x42
euc : xA4 xA2
となりました。いっぽう,例の関数では,「あ」は
xE3 x81 x82
という値になり,先の3つのコードとは一致しないみたいです。
jperl なるものは,まだ手に入れておりません。準備でき次第テストしてみます。
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 …
この回答をみるまで,UTF8コードというものの存在を知りませんでした。
早速UTF8というキーワードをもとに検索しましたところ,
UTF8 -> SJIS変換をサポートしている Jcode.pm というものを見つけることができました。これにより,今回の問題はクリアできました。
Win32APIの利用の方は,少しがんばってみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl で 64ビットint を扱うには?
-
例外処理のフローチャートの記...
-
エクセルVBAでシートモジュール...
-
Excel VBAで、ユーザーフォーム...
-
VBAで別モジュールへの変数の受...
-
グラフのX,Y座標を取得したい
-
Cからシェルを起動し返り値をハ...
-
VBAで旧字体を異字体に一括で変...
-
acwzlibとは?
-
Perl モジュールのアンインスト...
-
ユーザー定義関数に#NAME?が返...
-
ExcelVBA AddinでOnAction
-
YAMLについて
-
VBSがコンパイルエラーになりま...
-
VBA ユーザーフォーム Image1 ...
-
CPANモジュール取得におけるmak...
-
LCD ディスプレイを Raspberry ...
-
【vba】フォームに書いてあ...
-
ベースモジュールって?
-
Excel VBA 標準モジュール内で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl で 64ビットint を扱うには?
-
漢字、カタカナ、ひらがな、英...
-
perlのgrepで日本語の処理でエ...
-
日本語のpunycode変換詳しい方...
-
CGI.pm使用時の文字化けについて
-
perl 正規表現 抽出
-
(秀丸)正規表現で、CSV内金額へ...
-
UserGetAttributesの第7引数が...
-
Perlの文字コード
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
LCD ディスプレイを Raspberry ...
-
「デバイスは PRN を初期化でき...
-
エクセルVBAでシートモジュール...
-
VBSがコンパイルエラーになりま...
-
VBでグローバル変数を宣言するには
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
ユーザー定義関数に#NAME?が返...
-
VBA This Workbookモジュール...
おすすめ情報