[date:20100726]の検索結果
単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、 プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。
以下のプログラムはLinuxやCygwinの環境でC言語のプログラムからiconvを呼び出して文字エンコードを 変換する場合の手順を示したサンプルプログラムです。
--- tst_iconv.c ---
#include <stdio.h>
#include <iconv.h>
#define BUFSIZE 1024
char outbuf[BUFSIZE];
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize);
main(void)
{
int ret;
ret = convert("SHIFT-JIS", "UTF-8",
"日本語テストメッセージおはよう",
outbuf, sizeof(outbuf));
if (ret) {
printf("%s\n", outbuf);
}
else {
printf("Oops!\n");
}
}
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize)
{
iconv_t cd;
size_t srclen, destlen;
size_t ret;
cd = iconv_open(dest, src);
if (cd == (iconv_t)-1) {
perror("iconv open");
return 0;
}
srclen = strlen(text);
destlen = bufsize - 1;
memset(buf, '\0', bufsize);
ret = iconv(cd, &text, &srclen, &buf, &destlen);
if (ret == -1) {
perror("iconv");
return 0;
}
iconv_close(cd);
return 1;
}
コンパイル方法
$ gcc -o tst_iconv tst_iconv.c -liconv
PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPerlプログラムでは、テーブル「users」からステータスが1のレコードを全て取得、一旦配列に格納してから標準出力に出力しています。
検索条件の設定にはプレースホルダを使用し、DB処理でエラーが発生した場合は、例外処理に飛んでエラーの内容が出力されるように、RaiseErrorに1を設定しています。
--- mysql_select.pl ---
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $data_source = "DBI:mysql:testdb"; # 接続先はtestdb
my $username = "test"; # データベースへのアクセス権限を持つユーザーを指定
my $password = "abcd"; # そのパスワード
my $status = 1;
my @recs = ();
eval {
my $dbh = DBI->connect($data_source, $username, $password,
{RaiseError => 1, PrintError => 0});
my $sql = "select * from users where status = ?";
my $sth = $dbh->prepare($sql);
$sth->execute($status);
while (my @rec = $sth->fetchrow_array) {
push @recs, [@rec];
}
$sth->finish;
$dbh->disconnect;
};
if ($@) {
print "Error : $@\n";
}
foreach my $rec (@recs) {
print join(",", @{$rec}), "\n";
}
1
アクセスランキング
今日のアクセスランキング TOP 10
- 警視庁の捜査資料がウィニーに流出 (2 PV)
- Mr.Children(ミスチル) (2 PV)
- ネット未来地図 ポスト・グーグル時代 20の論点 佐々木俊尚 (2 PV)
- 嬉野流開発者のたまごん(嬉野宏明)さんがソフト指し疑惑で将棋倶楽部24のアカウントを停止されてしまう #将棋 (2 PV)
- Microsoft OneNote(マイクロソフト ワンノート)- 文書作成ソフト (2 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (2 PV)
- エーハチネット(A8.net)、商品DBサービスを開始 (1 PV)
- [映画]スター・ウォーズ/フォースの覚醒が大ヒット (1 PV)
- 「チケキャン」閉鎖、ミクシィ子会社運営のチケット転売サイト #チケットキャンプ (1 PV)
- 剛力彩芽さんが「顔がすごい好き」と前澤社長の魅力を告白、「お金目当て」は下衆の勘繰りだった (1 PV)
今月のアクセスランキング TOP 10
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (10 PV)
- FC2WiFI (4 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (3 PV)
- 三井住友海上火災保険、一部業務停止命令の見通し (3 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3 PV)
- Microsoft OneNote(マイクロソフト ワンノート)- 文書作成ソフト (3 PV)
- アドセンス代替広告にアフィリエイト広告を表示する方法 (3 PV)
- [配布終了]MT4向けスキャルEA「Surfing Forex(サーフィンフォレックス)」Free版(0.01ロット固定、無料、使用期限無し) #海外FX (2 PV)
- Windowsストア 日本語 (2 PV)
- ヤフーの検索結果に広告表示できるオーバーチュア「スポンサードサーチ」 (2 PV)
アクセス統計
ディレクトリ
関連サイト