人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Perl】まとめて【utf8】フラグ付けることできますか?
DBからフェッチした日本語文字列に、utf8フラグを付ける場合、逐一 decode() しなければならないのでしょうか?
詳細スクリプト
http://www3.ezbbs.net/15/radio3/
----
use utf8;
use Encode;
use DBI;
my $dbh = DBI->connect(”DBI:mysql:$db_name:$db_server”, $db_user, $db_user_pass) or die qq(DB接続不能: $DBI::errstr);
my $sth = $dbh->prepare(”SELECT * FROM $table”);
$sth->execute;
for($i=0; $i<$sth->rows; $i++){
$hash[$i] = $sth->fetchrow_hashref();
## 全ての列に対してdecode()実行?
if(! is_utf8($hash[$i]->{”name1”})){ # 名前をutf8化
$hash[$i]->{”name1”} = decode(’Guess’, $hash[$i]->{”name1”});
}
# 以下、延々
}
----

binmode STDIN, ’:encoding(euc-jp)’;
とやってもダメでした。

guess_encoding($hash[$i]->{”name1”}) の結果は XS=SCALAR です。

●質問者: radio3
●カテゴリ:コンピュータ
✍キーワード:CONNECT dB DBI EUC-JP MySQL
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● thrillseeker
●40ポイント

http://santamartadotnet.hp.infoseek.co.jp/documents/perl/learnin...

smdn: Perl学習帳 その6 ハッシュ(連想配列)

ベタなやり方ですが、keys で連想配列 %{hash[$i]} のキーを配列として取得し、

それを元に foreach 文を回せば キーを逐一書く手間は一応省けます。


foreach $key ( keys(%{hash[$i]}) ) {

$hash[$i]->{$key} = decode(’Guess’,$hash[$i]->{$key} ) unless ( is_utf8($hash[$i]->{$key}) );

}

◎質問者からの返答

おっしゃるとおりですが、それも”逐一decode()”ですので...

binmodeように、まとめて簡単に指定できる方法があるのではないかと推測しておりまして...

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ