perlでjcode::convertで
半角を全角に変換すると
正しく変換される時とされない時があります。
例えば、
sample1.plとsample2.plの
my $message = 'の次の「ハンカク」の4文字は半角の文字です。
(注)ここにアップロードすると全角で表示されてしまいます。
この4文字を半角にして確認してください。
sample1.plではこの4文字が全角に変換されるのですが
sample2.plではこの4文字は半角のままです。
なぜ全角に変換されないのでしょうか。
(Windows7, ActivePerl v5.16.3)
---sample1.pl------------
require "jcode.pl";
my $message = 'ハンカク文字は使えるかな?';
jcode::convert(\$message,"sjis","", "z");
print "$message\n";
---------------
---sample2.pl------------
require "jcode.pl";
my $message = 'ハンカク文字';
jcode::convert(\$message,"sjis","", "z");
print "$message\n";
---------------
なお、どちらも以下のようなメッセージが表示されています。
これは何を意味しているのでしょうか。
defined(%hash) is deprecated at C:/Perl64/site/lib/jcode.pl line 684.
(Maybe you should just omit the defined()?)
defined(%hash) is deprecated at C:/Perl64/site/lib/jcode.pl line 693.
(Maybe you should just omit the defined()?)
お礼
jcode::convert(\$message,"sjis","euc","z"); で確認すると、perlの内部ではEUCのはずなので これでいいように思いますが なぜか「保狂文字」と表示されます。 jcode::convert(\$message,"sjis","sjis","z"); とすると、正しく「ハンカク文字」と表示されました。 jcode::h2z_sjis(\$message); でも、正しく表示されました。 jcode.plの方も、684と693をコメントアウトすると メッセージは出なくなりました。 ありがとうございました。