
下記のperlのソースで出カさせると文字化けをする。
windows7でutf8で書いています。
mysqlの設定はutf8になっています。
print文で漢字以外は正常ですが、漢字の部分が文字化けをします。
修正個所を指摘願います。
宜しくお願いします。
use Encode;
use utf8;
use open IO => ":encoding(cp932)";
binmode STDOUT,':utf8';
# DBIモジュールを読込む
use DBI;
# データベース名を設定
$database = "mail";
# ホスト名を設定
$hostname ="localhost";
# ユーザ名を設定
$user = "****"; # データベースにパスワードを設定していれば指定
$password = "****";
# データベースのオブジェクトを作成して接続
$dsn="DBI:mysql:database=$database:host=$hostname";
$dbh = DBI->connect($dsn,$user,$password);
$rs = $dbh->prepare("select * from mail limit 100;");
$rs->execute();
# 取得したレコードセットの数だけループして表示
while(($mail,$id) = $rs->fetchrow()) {
print join("|",$mail,$id),"\n";
}
# レコードセットを閉じる
$rs->finish;
# データベースを閉じる
$dbh->disconnect;
exit;
No.2
- 回答日時:
>下記の様にsubject以降が文字化けをしています。
元がメールならばMIMEエンコードされていたりしませんか?
まぁ、メールだとするといろいろヘッダが足りないかもしれませんが。
perlではなく、コマンドでDBから取得したらどんなバイナリになるんでしょう?
有難う御座います。
下記は、cp932で書いています。
下記は正常に出カします。
utf8でperlは書きたいのですが、何処がおかしいのでしょうか。
# DBIモジュールを読込む
use DBI;
# データベース名を設定
$database = "mail";
# ホスト名を設定
$hostname ="localhost";
# ユーザ名を設定
$user = "***"; # データベースにパスワードを設定していれば指定
$password = "****";
# データベースのオブジェクトを作成して接続
$dsn="DBI:mysql:database=$database:host=$hostname";
$dbh = DBI->connect($dsn,$user,$password);
$dbh->do("set names sjis");
# 取得したテーブルにリレーションで都道府県名を追加している
$rs = $dbh->prepare("select * from mail limit 100;");
$rs->execute();
# 取得したレコードセットの数だけループして表示
while(($mail,$id) = $rs->fetchrow()) {
print join("|",$mail,$id),"\n";
}
# レコードセットを閉じる
$rs->finish;
# データベースを閉じる
$dbh->disconnect;
exit;
No.1
- 回答日時:
「print文で漢字以外は正常ですが、漢字の部分が文字化けをします。
」というのは, どのように確認したんでしょうか?出カの一部を抜粋します。
最初は、漢字では有りません。この部分は正常です。
その後に漢字が出ます。
Return-Path: mailmag-0001529850@receive.mag2.com|490313
Received: from z-oha-vzmta051-sv.z-seg.bbiq.jp (LHLO|490314
z-oha-vzmta051-sv.z-seg.bbiq.jp) (10.1.55.95) by|490315
z-oha-vzmbs151-sv.z-seg.bbiq.jp with LMTP; Mon, 20 Apr 2015 21:50:35 +0900|490316
(JST)|490317
Received: from localhost (localhost [127.0.0.1])|490318
by z-oha-vzmta051-sv.z-seg.bbiq.jp (Postfix) with ESMTP id 25343A4841|490319
for <usui@ori.bbiq.jp>; Mon, 20 Apr 2015 21:50:35 +0900 (JST)|490320
X-Spam-Flag: NO|490321
X-Spam-Score: 1|490322
X-Spam-Level: *|490323
X-Spam-Status: No, score=1 tagged_above=-10 required=6.6 tests=[dummy=1]|490324
autolearn=no|490325
Authentication-Results: z-oha-vzmta051-sv.z-seg.bbiq.jp (amavisd-new);|490326
dkim=pass (1024-bit key) header.d=mag2.com|490327
下記の様にsubject以降が文字化けをしています。
Subject: ????BBIQ?STEP?????????????300MB???|34
|35
|36
Subject: 【重要】BBIQ「STEPプラン」通信量のお知らせ(300MB超過)
■□■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■□■
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
Windowsで複数のファイルを同じ...
-
FindFirstFileとFindNextFileで...
-
DOSコマンドで、標準出力を出力...
-
パスから最後のディレクトリだ...
-
drtファイルはどうしたら開...
-
Perl 時間同士の差
-
C++でのテキストファイル読み込...
-
空白文字 \\f と\\v の違いに...
-
テキストファイルから日本語部...
-
C言語で特定の行を抽出する方法...
-
タブの色を変更する方法
-
chdirがうまくできない
-
awkスクリプトでダブルクォーテ...
-
エラーログ「\\x8ew\\x92\\xe8...
-
JavaでCSVファイルを高速に読む...
-
並び方、
-
Perl Vlookupみたいに
-
csvファイルの横方向への改行に...
-
大量メールの任意のヘッダだけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
【エラー】Unrecognized character
-
does not map to shiftjis は解...
-
perlでuse utf8でsjisのファイ...
-
Data::Dumper;でダンプ後表示し...
-
消費税の計算で 税込価格から...
-
Perl UTF8で出力
-
ファイル出力をUTF8Nではなくて...
-
Perl:Unicodeプロパティ作れない
-
文字を一文字ずつ区切りたい
-
perlのmysqlで文字化けをする、...
-
sedの動作
-
perlのLWP::Simpleでgrepの値が...
-
Perl utf8上でshiftjisをデコード
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
awkスクリプトでダブルクォーテ...
-
batファイルでrenameができませ...
-
VBAでCSVファイルを途中行まで...
-
Windowsで複数のファイルを同じ...
おすすめ情報