アプリ版:「スタンプのみでお礼する」機能のリリースについて

Win32::NetAdminモジュールの中の UserGetAttributes関数に関する質問です。

WindowsNT 4.0, ActivePerl 623, Win32::NetAdmin (version = 0.07)
を使っています
NTサーバ上のユーザの属性を取りだすスクリプトの中で UserGetAttributes 関数を使ったところ,この関数の第7引数に格納される "説明"という項目に全角文字がふくまれている場合には,文字化けして(2バイトの文字が3バイトになって)とりだされてしまいます。半角文字はそのままとりだすようです。

私の環境が悪いのか,それともこういった仕様なのかが判断できずにいます。
同じ経験をされた方はいらっしゃらないでしょうか。

仮に仕様によるものだとすると,文字化けした戻り値をsjis等に変換するモジュールも存在しそうなものですが,実際どこかにあるのでしょうか。

A 回答 (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 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/02/19 21:38

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 なるものは,まだ手に入れておりません。準備でき次第テストしてみます。

補足日時:2001/02/19 10:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!