[日本]の検索結果
まずカタカナより比較的プログラミングしやすそうな英数字の全角半角変換から作成します。
半角から全角への変換の処理手順は、
・半角英数字の場合は、同じ全角英数字に置き換えて戻り値として返す文字列に連結
・それ以外の文字の場合はそのまま戻り値として返す文字列に連結
また、全角から半角への変換の処理手順は、
・全角英数字の場合は、同じ半角英数字に置き換えて戻り値として返す文字列に連結
・それ以外の文字の場合はそのまま戻り値として返す文字列に連結
となります。
文字コードはそれぞれ以下の通りですので、これらに該当する文字があったら置き換えを行います。
半角数字:0 - 9
30 - 39
全角数字:0 - 9
EFBC90 - EFBC99
2バイト目まではEFBC
半角アルファベット大文字:A - Z
41 - 5A
全角アルファベット大文字:A - Z
EFBCA1 - EFBCBA
2バイト目まではEFBC
半角アルファベット小文字:a - z
61 - 7A
全角アルファベット小文字:a - z
EFBD80 - EFBD9A
2バイト目まではEFBD
以下が英数字の半角から全角へ、全角から半角への変換を行うコード(プログラム)です。
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
my $hanAlnum = "ABCDEい12345あabcde";
my $zenAlnum = "ABCDEい12345あabcdeカ";
my $zenstr = han2zen_alnum($hanAlnum);
Encode::from_to($hanAlnum, 'utf8', 'cp932');
Encode::from_to($zenstr, 'utf8', 'cp932');
print "$hanAlnum ---> $zenstr\n";
my $hanstr = zen2han_alnum($zenAlnum);
Encode::from_to($zenAlnum, 'utf8', 'cp932');
Encode::from_to($hanstr, 'utf8', 'cp932');
print "$zenAlnum ---> $hanstr\n";
# UTF-8でエンコードされた半角英数字を全角英数字に変換する
sub han2zen_alnum {
my ($src) = @_;
my $srclen = length($src);
my $pos = 0;
my $dest = '';
while ($pos < $srclen) {
my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
my $bytelen = _bytesize($code);
my $lastbyte = 0;
my $bytechar = '';
my $flagged_utf8 = '';
if ($code >= 0x30 && $code <= 0x39) { # 数字
$lastbyte = 0x90 + ($code - 0x30);
$bytechar = pack("C3", 0xEF, 0xBC, $lastbyte);
$dest .= $bytechar;
}
elsif ($code >= 0x41 && $code <= 0x5A) { # 大文字英字
$lastbyte = 0xA1 + ($code - 0x41);
$bytechar = pack("C3", 0xEF, 0xBC, $lastbyte);
$dest .= $bytechar;
}
elsif ($code >= 0x61 && $code <= 0x7A) { # 小文字英字
$lastbyte = 0x81 + ($code - 0x61);
$bytechar = pack("C3", 0xEF, 0xBD, $lastbyte);
$dest .= $bytechar;
}
else {
$dest .= substr($src, $pos, $bytelen);
}
$pos += $bytelen;
}
return $dest;
}
# UTF-8でエンコードされた全角英数字を半角英数字に変換する
sub zen2han_alnum {
my ($src) = @_;
my $srclen = length($src);
my $pos = 0;
my $dest = '';
while ($pos < $srclen) {
my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
my $bytelen = _bytesize($code);
my $hit = 0;
if ($code == 0xEF) { # 全角英数の場合は1バイト目がEF
my $code2 = ord substr($src, $pos + 1, 1); # 2バイト目
my $code3 = ord substr($src, $pos + 2, 1); # 3バイト目
if ($code2 == 0xBC) {
if ($code3 >= 0x90 && $code3 <= 0x99) {
$dest .= chr(0x30 + ($code3 - 0x90));
$hit = 1;
}
elsif ($code3 >= 0xA1 && $code3 <= 0xBA) {
$dest .= chr(0x41 + ($code3 - 0xA1));
$hit = 1;
}
}
elsif ($code2 == 0xBD) {
if ($code3 >= 0x80 && $code3 <= 0x9A) {
$dest .= chr(0x61 + ($code3 - 0x80));
$hit = 1;
}
}
}
if(!$hit) {
$dest .= substr($src, $pos, $bytelen);
}
$pos += $bytelen;
}
return $dest;
}
# 文字のバイト長を求める
sub _bytesize {
my $code = shift;
my $size = 1;
if (0x80 & $code) { # 1バイト文字以外
$code <<= 1;
for my $i (2 .. 8) {
$size++;
$code <<= 1;
last if (!(0x80 & $code));
}
}
return $size;
}
Yahoo!Japan(ヤフージャパン)とは
Yahoo! JAPAN(ヤフージャパン)は、ヤフー株式会社が運営する検索、オークション、ニュース、メール、コミュニティ、ショッピングなど80以上のサービスを展開している日本最大級のポータルサイト。現在、ウェブ検索ではGoogleの検索エンジンを採用。
Yahoo!Japan(ヤフージャパン)の主なサービス
- 検索(ウェブ、画像、動画、辞書、地図、リアルタイム)
- ヤフオク! ネットオークション
- Yahoo! ニュース 最新ニュース
- GyaO 映画、アニメ、ドラマ、音楽の無料動画
- Yahoo! ファイナンス 投資情報
- textream 匿名掲示板
- Yahoo! ショッピング ネット通販
ポータルサイト (portal site) とは
ポータルサイト (portal site) は、ウェブを閲覧するときの入口となるウェブサイトのことで、ブラウザのホームページに設定して利用することが多い。 代表的なポータルサイトのGoogle(グーグル)、Yahoo!Japan(ヤフージャパン)では検索エンジンを中心にニュース、辞書、メールサービスなどといったユーザーが毎日のように利用するサービスが提供されている。
Unicodeの文字コード表によるとUTF-8の半角英数、全角英数、半角カナ、全角カナの文字コードは以下のようになるようです。 英数字の場合は半角と全角の文字がそれぞれ対応していますが、カタカナの場合は半角と全角では文字の数が違うようです。
半角数字:0 - 9
30 - 39
全角数字
EFBC90 - EFBC99
2バイト目まではEFBC
半角アルファベット大文字:A - Z
41 - 5A
全角アルファベット大文字:A - Z
EFBCA1 - EFBCBA
2バイト目まではEFBC
半角アルファベット小文字:a - z
61 - 7A
全角アルファベット小文字:a - z
EFBD80 - EFBD9A
2バイト目まではEFBD
半角カナ(JISカナ)
EFBDA1 - EFBE9F
1バイト目がEFで2バイト目、3バイト目がBDA1 - BE9Fの範囲
全角カタカナ
E38299 - E383BF
1バイト目がE3で2バイト目、3バイト目が82A1 - 83BFの範囲
Unicode対応 文字コード表
http://ash.jp/code/unitbl1.htm
http://ash.jp/code/unitbl21.htm
動作確認用にまずUTF-8の文字コードを表示するプログラムを作成します。
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
my $hanAlnum = "ABCDE12345abcde";
my $zenAlnum = "ABCDE12345abcde";
my $hanKana = "アイウエオ";
my $zenKana = "アイウエオ";
print_charcode($hanAlnum);
print "\n";
print_charcode($zenAlnum);
print "\n";
print_charcode($hanKana);
print "\n";
print_charcode($zenKana);
print "\n";
# UTF-8でエンコードされた文字列の文字コードを表示する
sub print_charcode {
my ($src) = @_;
my $srclen = length($src);
my $pos = 0;
while ($pos < $srclen) {
my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
my $bytelen = _bytesize($code);
my $srcchar = substr($src, $pos, $bytelen);
my $codestr = sprintf("%2.2X ", $code);
if ($bytelen > 1) {
my $times = $bytelen - 1;
for my $i (1 .. $times) {
my $charcode = ord substr($src, $pos + $i, 1);
$codestr .= sprintf("%2.2X ", $charcode);
}
}
# Windowsで表示するのでcp932(シフトJIS)に変換
Encode::from_to($srcchar, 'utf8', 'cp932');
print "$srcchar : $codestr\n";
$pos += $bytelen;
}
}
# 文字のバイト長を求める
sub _bytesize {
my $code = shift;
my $size = 1;
if (0x80 & $code) { # 1バイト文字以外
$code <<= 1;
for my $i (2 .. 8) {
$size++;
$code <<= 1;
last if (!(0x80 & $code));
}
}
return $size;
}
Perl Hacks ―プロが教えるテクニック & ツール101選
オライリー・ジャパン 著者:chromatic,Damian Conway,Curtis "Ovid" Poe
amazon.co.jpのカスタマーレビューを見る
powered by amalink
アクセスランキング
今日のアクセスランキング TOP 10
- オープンソースの掲示板ソフト (14 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (11 PV)
- FC2まとめ (5 PV)
- サウジ総領事館の記者殺害疑惑、トルコ警察が「殺害された証拠」を発見 (3 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3 PV)
- Visual Basic (2 PV)
- アリアナ・グランデのコンサートで爆弾テロ事件、ワールドツアーは中止に (2 PV)
- 「mylo(マイロ)」、日本でも発売 (2 PV)
- 「ロード・オブ・ザ・リング」 (2 PV)
- ネットキャッシング、借入・返済シミュレーション (2 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (42 PV)
- FC2まとめ (21 PV)
- オープンソースの掲示板ソフト (15 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (14 PV)
- StartPage(スタートページ) - 匿名検索エンジン (8 PV)
- 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (7 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (6 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (5 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (5 PV)
アクセス統計
ディレクトリ
関連サイト





