[テキスト]の検索結果
C言語のstrlen関数では
文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。Webアプリケーションのテキスト処理で...
C言語のstrlen関数では文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。
Webアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。
#include <stdio.h>
#include <string.h>
int strlen_utf8(char *cp);
int _bytesize(unsigned char code);
int main(void)
{
char *testAscii = "ABCDEFG";
char *testHira = "あいうえお";
char *testKata = "アイウエ";
char *testKanji = "愛々木";
char *testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
printf("strlen(testAscii) = %d\n", strlen(testAscii));
printf("strlen_utf8(testAscii) = %d\n", strlen_utf8(testAscii));
printf("strlen(testHira) = %d\n", strlen(testHira));
printf("strlen_utf8(testHira) = %d\n", strlen_utf8(testHira));
printf("strlen(testKata) = %d\n", strlen(testKata));
printf("strlen_utf8(testKata) = %d\n", strlen_utf8(testKata));
printf("strlen(testKanji) = %d\n", strlen(testKanji));
printf("strlen_utf8(testKanji) = %d\n", strlen_utf8(testKanji));
printf("strlen(testAll) = %d\n", strlen(testAll));
printf("strlen_utf8(testAll) = %d\n", strlen_utf8(testAll));
return 0;
}
int strlen_utf8(char *cp)
{
int textlen = strlen(cp);
int pos = 0;
int count = 0;
while (pos < textlen) {
unsigned char code;
code = *(cp + pos);
int bytelen = _bytesize(code);
pos += bytelen;
count++;
}
return count;
}
int _bytesize(unsigned char code)
{
int size = 1;
int i;
if (0x80 & code) {
for (i = 2; i <= 8; i++) {
code <<= 1;
if (!(0x80 & code)) {
break;
}
size++;
}
}
return size;
}
strlen_utf8関数では、1バイト目のASCIIコード値をパラメータとして_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。
また、_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定して戻り値として返しています。
プロクラムの実行結果は以下のようになります。
kagahiro@kagahiro-PC ~/sample/c
$ ./strlen_utf8
strlen(testAscii) = 7
strlen_utf8(testAscii) = 7
strlen(testHira) = 15
strlen_utf8(testHira) = 5
strlen(testKata) = 12
strlen_utf8(testKata) = 4
strlen(testKanji) = 9
strlen_utf8(testKanji) = 3
strlen(testAll) = 52
strlen_utf8(testAll) = 22
Yahoo!掲示板は、Yahoo! Japanが提供している株式情報やニュース速報が中心のネット掲示板サービス。
昨年(2012年)12月21日に開始された新しいコミュニケーションサービスの「textream(テキストリーム)」への移行によって、今年(2013年)の2月中旬には、Yahoo!掲示板への投稿、削除ができなくなり(閲覧のみ可能)、3月下旬には閉鎖されることが予定されている。
Yahoo!掲示板
【重要】Yahoo!掲示板をご利用のお客様へ(仕様の違いについてご案内) - 『textream』オフィシャルブログ - Yahoo!ブログ
textream(テキストリーム)は、
Yahoo! JAPANを運営するヤフー株式会社が「
Yahoo!掲示板」に変わるコミュニケーションサービスとして提供を開始したサービス。当面の併存期間を経た上で、2013年初旬にスマートフォン...
textream(テキストリーム)は、Yahoo! JAPANを運営するヤフー株式会社が「Yahoo!掲示板」に変わるコミュニケーションサービスとして提供を開始したサービス。当面の併存期間を経た上で、2013年初旬にスマートフォン版及びPC版「Yahoo!掲示板」は「textream」に移行する。
「textream」は、ユーザー自身が自由にスレッドを登録し、同じ話題を基に、不特定多数でのコミュニケーションを楽しめるサービスで、ニックネームや写真などのプロフィール情報を登録し、匿名でありながら個人として人格を持って利用できることが大きな特徴。
textream(テキストリーム)
Yahoo! JAPAN、新サービス「textream(テキストリーム)」を公開
Perlのlength関数ではバイト単位となるので、UTF-8でエン
コードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合も...
Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。
ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど)
も1文字としてカウントする関数を作成することにします。
UTF-8では、
1バイト目の先頭ビットが0の場合は1バイト文字
1バイト目の先頭から3ビットが110の場合は2バイト文字
1バイト目の先頭から4ビットが1110の場合は3バイト文字
1バイト目の先頭から5ビットが11110の場合は4バイト文字
1バイト目の先頭から6ビットが111110の場合は5バイト文字
1バイト目の先頭から7ビットが1111110の場合は2バイト文字
という仕様ですので、1バイト目のビットの状態を調べることによって、その文字が何バイトかを調べることができます。
以下のコードでは、この仕様にもとづいて全角文字を含む文字列の文字数を取得しています。
#!/usr/bin/perl
use strict;
use warnings;
my $testAscii = "ABCDEFG";
my $testHira = "あいうえお";
my $testKata = "アイウエ";
my $testKanji = "愛々木";
my $testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
print "length($testAscii) = ".length($testAscii), "\n";
print "strlen_utf8($testAscii) = ".strlen_utf8($testAscii), "\n";
print "length($testHira) = ".length($testHira), "\n";
print "strlen_utf8($testHira) = ".strlen_utf8($testHira), "\n";
print "length($testKata) = ".length($testKata), "\n";
print "strlen_utf8($testKata) = ".strlen_utf8($testKata), "\n";
print "length($testKanji) = ".length($testKanji), "\n";
print "strlen_utf8($testKanji) = ".strlen_utf8($testKanji), "\n";
print "length($testAll) = ".length($testAll), "\n";
print "strlen_utf8($testAll) = ".strlen_utf8($testAll), "\n";
exit;
# UTF-8でエンコードされた文字列の文字数を取得する。
sub strlen_utf8 {
my ($text) = @_;
my $textlen = length($text);
my $pos = 0;
my $count = 0;
while ($pos < $textlen) {
my $code = ord substr($text, $pos, 1); # 先頭のASCIIコード値を取得
my $bytelen = _bytesize($code);
$pos += $bytelen;
$count++; # 文字数をカウント
}
return $count;
}
# 文字のバイト長を求める
sub _bytesize {
my ($code) = @_;
my $size = 1;
if (0x80 & $code) { # 1バイト文字以外
$size++;
$code <<= 1;
for my $i (2 .. 8) {
last if (!(0x80 & $code));
$size++;
$code <<= 1;
}
}
return $size;
}
strlen_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、
_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。
_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し
戻り値として返しています。
ゼロからわかる Perl言語超入門
技術評論社 著者:高橋 順子
amazon.co.jpのカスタマーレビューを見る
powered by amalink
ベイジアンフィルタは、ナイーブベイズ(Naive Bayes)という
アルゴリズムを利用して、対象となるデータを解析・学習し分類する為のフィルタで、学習量が増えるとフィルタの分類精度が上昇するという特徴をもつ。電子...
日本
電子書籍出版社協会(電書協)が加盟出版社向けに、国際的な
電子書籍フォーマットであるEPUB3フォーマットの
電子書籍を制作するためのガイド「電書協
EPUB3制作ガイド ver.1.0」を公開した。電書協のサイトから無...
日本電子書籍出版社協会(電書協)が加盟出版社向けに、国際的な電子書籍フォーマットであるEPUB3フォーマットの電子書籍を制作するためのガイド「電書協EPUB3制作ガイド ver.1.0」を公開した。電書協のサイトから
無料でダウンロードできる。
「電書協EPUB 3 制作ガイド ver.1.0」は、主に組み方向の混在や段組などのないシンプルな体裁の書籍を、リフロー型の電子書籍として記述するための指針となっており、画像の周囲をテキストが回り込むようなデザイン、凝った見出しのレイアウト、および固定型のレイアウト等については見送られている。
電書協EPUB3制作ガイド ver.1.0
電子書籍らくらく作成PACK <EPUBテンプレート付き>
技術評論社 著者:林 拓也
amazon.co.jpのカスタマーレビューを見る
powered by amalink
オープンソースのシンプルな
掲示板CGI「ThreadPlus」の最新版「ThreadPlus 1.1」をリリースしました。ThreadPlus 1.1では、以下の機能が追加されています。ホームページ機能(index.
CGI)RSS出力機能(rss.
CGI)サイトマ...
オープンソースのシンプルな掲示板CGI「ThreadPlus」の最新版「ThreadPlus 1.1」をリリースしました。
ThreadPlus 1.1では、以下の機能が追加されています。
- ホームページ機能(index.cgi)
- RSS出力機能(rss.cgi)
- サイトマッププロトコル対応機能(sitemap.cgi)
- ブックマークレット投稿機能(bbs.cgi)
ホームページ機能(index.cgi)
最新スレッド情報が掲載されたホームページを表示する機能です。
PC向けのページはテンプレートファイルのindex.tmpl、携帯向けindex_m.tmplをテキストエディターなどで編集することで内容を変更できます。
RSS出力機能(rss.cgi)
最新スレッド情報の情報をRSS 2.0形式で出力する機能です。RSSリーダーで最新スレッドの情報を購読することができます。
サイトマッププロトコル対応機能(sitemap.cgi)
Google ウェブマスターツールなどにコンテンツの情報を登録するための機能です。サイトマッププロトコルに対応しています。
ブックマークレット投稿機能(bbs.cgi)
ブックマークレットをブラウザに登録することで、ブラウザに表示中のウェブページを簡単に新しいスレッドとして投稿することができます。
ウェブページ内の任意のテキストを選択することで、その部分を引用して投稿することができます。
ThreadPlus 1.1のダウンロード
最速攻略 CGI/Perl サンプル大全集
技術評論社 著者:KENT
amazon.co.jpのカスタマーレビューを見る
powered by amalink
オープンソース・ソフトウェア紹介を中心としたITエンジニア/Webデザイナー向けブログの「
MOONGIFT」が、開発者本人によるソフトウェアリリースの受け付けを開始した。掲載料は無料。
リリースの送付方法は、テキストファイルに「ソフトウェア名」「ライセンス」「紹介文」を記述した上でinfo@moongift.jpまで送付する。
オープンソース・ソフトウェアのリリース受け付けます
ホームページでよく利用される、掲示板、Q&A、共有ブックマーク(リンク集)、連絡フォーム といった機能を、まとめて簡単にホームページに導入(一部機能だけの導入も可能)できる比較的簡単なPerlプログラム「
CGI ...
ホームページでよく利用される、掲示板、Q&A、共有ブックマーク(リンク集)、連絡フォーム といった機能を、まとめて簡単にホームページに導入(一部機能だけの導入も可能)できる比較的簡単なPerlプログラム「CGI APPS 1.0」をリリースしました。ライセンスはMITライセンスですので、無料で自由にカスタマイズして利用できますが、動作については無保証です。
「CGI APPS」は、「掲示板やリンク集は欲しいけどCMSを導入するのは大げさすぎる」「Q&Aだけでいいのでもっと安くして」などとというような個人や中小企業のホームページでの利用を想定しています。
CGI APPS の特徴
- CGIの開発言語として世界中で広く利用されているPerlによる実装
- テンプレートエンジン(HTML::Template)による処理とデザインの分離
- テキストファイルベースのデータ管理
- 管理者向けユーザー認証機能
CGI APPS
「CGI APPS 1.0」のリリースにともない、そのベースとなった
「メールフォームCGI」
「Q&A CGI」
「ブックマークCGI」
「掲示板CGI」は、
ファイルそのまま残しますが更新しません。
Texttは、単純に
テキストを記録しておくためのサービス。機能はシンプルで、1つの
テキストに複数の文章をタイトルつきで追加していく形で記録していくだけとなっている。
テキストは公開/非公開の設定ができる。Textt
Texttは、単純にテキストを記録しておくためのサービス。機能はシンプルで、1つのテキストに複数の文章をタイトルつきで追加していく形で記録していくだけとなっている。テキストは公開/非公開の設定ができる。
Textt
|< 先頭へ < 前へ 1 2 3 4 5 次へ >
アクセスランキング
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 使用制限無し (1 PV)
- 中上級者向け安全性重視のナンピンツール(半自動EA)「Million Dollar Pro」 #MT4 #有料版 (1 PV)
- 将棋実況チャンネル【クロノ】 - ヤフーニュースに掲載された将棋系ユーチューバー (1 PV)
- [FX]同一通貨ペアのポジションをまとめて決済できるMT5向けツール(EA)「Closer(クローザー) MT5」を完全無料で公開 (1 PV)
- 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (1 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3273 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (488 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (91 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (89 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (70 PV)
- Million Dollar Ver 1.09向けの収益性を重視したゴールド(Gold、XAUUSD)ロングセットファイル (64 PV)
- 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (63 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (59 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (51 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (46 PV)
アクセス統計
ディレクトリ
関連サイト