WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:sjisな全角文字列をlengthで全角1文字で1つと数えさせる方法

0:[投稿] euc [2005/01/09 21:28 ][環境:IE6 perl v5.8.3]

linux(redhat9)上でsjisな全角文字列をlengthで全角1文字で1つと数えさせるにはどのように
したらよいのでしょうか?

perlのスクリプト自体はeucで書いてあります。よろしくお願いします。


1:[回答] 森田 [2005/01/10 03:15 ]

# 最近の方法
open (IN, "<:encoding(shiftjis)", "a.txt");
$s = <IN>;
print length($s);

# あとは、lengthじゃありませんが、昔ながらの方法で
open (IN, "< a.txt");
$s = <IN>;
@words = ($s =~ /[\x80-\x9F\xE0-\xFF].|./g);
$length = @words;
print $length;


2:[回答] euc [2005/01/10 17:37 ]

ありがとうございます。
@words = ($s =~ /[\x80-\x9F\xE0-\xFF].|./g);
で試して出来ました。

openでのencoding(shift)ですが、すでに変数に入っているsjis文字を数える方法はないでしょうか?

utf8の場合utf8フラグを付けることで数えられるというのはちょっと
調べたのですが、sjisもこのような感じでする方法はないでしょうか?
やっぱりwin環境でないと無理なのでしょうか。


3:[完了] euc [2005/01/10 17:41 ]

すいませんちょっとボケてました。完了です。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World