下記の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で質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
ファイル出力をUTF8Nではなくて...
-
HTTP::Request::Common qw(POST...
-
fopenでディレクトリ内の全ファ...
-
バッチファイルの作り方(CSV→...
-
ReadLineでの読み出し行を指定する
-
awkスクリプトでダブルクォーテ...
-
教えて!perlから.exeファイル...
-
MySQLに画像を格納してperlで取...
-
パスから最後のディレクトリだ...
-
ExcelをCSV書き出す場合のシー...
-
DOSコマンドで、標準出力を出力...
-
dos変数の%~dp0は powershellで...
-
perlを用いた特定文字列間の抽...
-
複数ファイルの読み込みについて
-
perlでの三次元配列の作り方
-
Perlの変数に文字数制限(容量...
-
改行コードが勝手に
-
VBA テキストファイルを読み取...
-
VBAで巨大なファイルの途中から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル出力をUTF8Nではなくて...
-
Perl cgiの文字化けを直したい ...
-
perlをwindows環境でshift-jis...
-
[Perl]Shift-JISのXMLを解析する場
-
Perl utf8上でshiftjisをデコード
-
utf8使用時のフォーム入力文字...
-
Data::Dumper;でダンプ後表示し...
-
(Perl)UTF-8で別ファイルに書き...
-
perlのmysqlで文字化けをする、...
-
Perl UTF8で出力
-
perlのLWP::Simpleでgrepの値が...
-
HTTP::Request::Common qw(POST...
-
vimでのutf8の取扱について
-
文字を一文字ずつ区切りたい
-
does not map to shiftjis は解...
-
じゃらんのAPIでRESTで取得した...
-
perlでuse utf8でsjisのファイ...
-
VBAでCSVファイルを途中行まで...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
おすすめ情報