09/04/09 21:10:04
誰か助けて下しア
環境がPERL5.8.* Jcode 2.6.5
PERL5.6.1 Jcode2.0から移したら
今までCGIで文字化けしなかったものが化けました。
$str = '㈱ホゲマン';
$hoge = Jcode->new($str, euc)->h2z->euc;
print "$hoge";
今までは ㈱ホゲマン
と表示されていたのに、 ?ホゲマン
となります。
原因を調べていたら、5.8移行は機種依存文字は無視しないで?に変換してしまうとのことで。。。
これを ㈱ホゲマン となるように
解決したいのですが、どなたかご教授ください。
541:デフォルトの名無しさん
09/04/09 21:16:20
すみません
他で聴くためこちらの回答は不要です
失礼しました
542:デフォルトの名無しさん
09/04/09 21:28:24
541は540とは違います。
引き続き回答お願いします。
543:デフォルトの名無しさん
09/04/09 21:50:52
コードをeucで書いて、sjisで読んでeucに変換して処理して、
ということをよくやるけど、ローマ数字が元に戻せなくなるんだよな
544:デフォルトの名無しさん
09/04/09 22:06:00
euc-jp-msでも?
545:デフォルトの名無しさん
09/04/09 22:37:02
そんなencodeは知らんと言われる
546:デフォルトの名無しさん
09/04/09 22:48:06
ppm install Encode::EUCJPMS
みたいなことをしても、見つからない
547:デフォルトの名無しさん
09/04/09 22:58:35
5.8.xならactivestateのリポジトリにあるみたいだけど。
ppm install Encode-EUCJPMS
548:デフォルトの名無しさん
09/04/09 23:00:35
それもやったんだけどな
無いってよ
549:デフォルトの名無しさん
09/04/09 23:21:10
普通に入ったぞ。見りゃわかるだろうが手元はwindowsな
I:\> ppm i Encode-EUCJPMS
====================
Install 'Encode-EUCJPMS' version 0.07 in ActivePerl 5.8.8.817.
====================
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\Perl\site\lib\auto\Encode\EUCJPMS\EUCJPMS.dll
Installing C:\Perl\site\lib\auto\Encode\EUCJPMS\EUCJPMS.exp
Installing C:\Perl\site\lib\auto\Encode\EUCJPMS\EUCJPMS.lib
Installing C:\Perl\site\lib\Encode\EUCJPMS.pm
Successfully installed Encode-EUCJPMS version 0.07 in ActivePerl 5.8.8.817.
550:デフォルトの名無しさん
09/04/09 23:25:56
D:\>ppm i Encode-EUCJPMS
ppm i failed: Can't find any package that provide Encode-EUCJPMS
なーにが違うんだろう
D:\>perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 18 registered patches, see perl -V for more detail)
551:デフォルトの名無しさん
09/04/09 23:30:44
I:\> perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 25 registered patches, see perl -V for more detail)
Copyright 1987-2006, Larry Wall
Binary build 817 [257965] provided by ActiveState URLリンク(www.ActiveState.com)
Built Mar 20 2006 17:54:25
ppm repは?もしかしてactivestateのリポジトリ無効にしてるとか無いよな?
552:デフォルトの名無しさん
09/04/09 23:40:11
D:\>ppm rep
レトトトトツトトトトトトツトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトソ
ウ id ウ pkgs ウ name ウ
テトトトトナトトトトトトナトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトエ
ウ 1 ウ 9817 ウ ActiveState Package Repository ウ
タトトトトチトトトトトトチトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル
(1 enabled repository)
大丈夫なのか、この画面は
553:デフォルトの名無しさん
09/04/09 23:43:13
んー、ppmのバージョン違うのか?その表示は覚えが無いぞ…
> ppm version
PPM 3.4
> ppm rep
Repositories:
[1] tcool
[2] ActiveState Package Repository
554:デフォルトの名無しさん
09/04/09 23:46:25
D:\>ppm version
ppm 4.01
Copyright (C) 2007 ActiveState Software Inc. All rights reserved.
ここがはっきり違う
Binary build 822 [280952] provided by ActiveState URLリンク(www.ActiveState.com)
Built Jul 31 2007 19:34:48
ここ?
555:デフォルトの名無しさん
09/04/09 23:56:53
あー、わかった。activeperl5.8.xは確かbuild818か819ぐらいで別リポジトリになってるんだわ
てことはそっちの新しいリポジトリに入ってないんだな
今ちょっと調べてきたらtrouchelle(URLリンク(trouchelle.com))のリポジトリに入ってるみたいなんで、
リポジトリ追加したらいいと思う
build822だからこれでリポジトリ追加して
ppm rep add trouchelle URLリンク(trouchelle.com)
ppm i Encode-EUCJPMS
で入ると思う
ま、ローマ数字扱えるかどうかは確信がもてないがw
556:デフォルトの名無しさん
09/04/10 00:03:55
D:\>ppm rep add trouchelle URLリンク(trouchelle.com)
Downloading trouchelle packlist...done
Updating trouchelle database...done
Repo 2 added.
D:\>ppm i Encode-EUCJPMS
Downloading Encode-EUCJPMS-0.07...done
Unpacking Encode-EUCJPMS-0.07...done
Generating HTML for Encode-EUCJPMS-0.07...done
Updating files in site area...done
7 files installed
流石は名探偵
557:デフォルトの名無しさん
09/04/10 00:08:39
でもローマ数字は駄目だった
558:デフォルトの名無しさん
09/04/10 00:10:42
と思ったら、shiftjisじゃなくてcp932にしたら上手く行った
559:デフォルトの名無しさん
09/04/10 00:14:55
サンプル
#written in EUC
use Encode;
use Encode::EUCJPMS;
$str = "つ⑩";
print e2s($str);
sub e2s() {
my $str = shift;
return encode('cp932', decode('euc-jp-ms', $str));
}
560:デフォルトの名無しさん
09/04/10 02:08:03
>>539
どういうことですか?