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

OSはWIN2000、AN HTTP+mysql5.0+perl5.8をインストールしたのですがつまずいております。
「mysqlコマンドでは大丈夫ですがperlで出力した日本語の文字が ? に化けます。」いくつも解説しているページを見つけましたが情けないのですが、解決できませんでした。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_52
http://reverb.jp/vivian/index.php?itemid=497
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2062298
?perlでは、『データベース、テーブルの作成時』『connectしたあと』query("set character set sjis") を書くらしいのですが、http://homepage1.nifty.com/yito/anhttpd/faq/mysql.htmlこのページのスクリプトを例に書き直すとするとどんな文を書けばよいでしょうか。データベースを作る(SET付与)ときのコマンドラインの書き方も補足をお願いしたいです。
?my.iniの書き方のアドバイスをお願いします。いろいろなページを見て書き直しましたが、show variables like 'char%';を実行するとcharacter_set_filesystemがbinaryでcharacter_set_systemがutf8他はsjisになってます。これでよいのでしょうか。上記の他になにか必要な設定がありましたら合わせてお願いします。
perlは初心者でmysqlは、はじめてです。よろしくお願いします。

●質問者: rain2003
●カテゴリ:コンピュータ
✍キーワード:Char CONNECT HTTP MySQL OS
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tenshiks
●35ポイント

なかなか回答がないようですので…

近頃php+postgresqlなので的確な答えでなければ申し訳ないですが。

perlでも一緒ですので。

インストール手順としてしっかりしているサイトです。

http://php.goinkyo.be/?clt=general&doc=isrtmsl

?:とりあえず「?」文字化けであればmy.iniを下記のような感じでどうでしょう?

全てをsjisにそろえて下さい。

[client]

default-character-set=sjis

[mysqld]

language = japanese

default-character-set=sjis

init-connect=SET NAMES sjis

?:?で解決しない場合、

connectした後すぐにqueryを流してみてください。

ちなみにこれはconnectする度にです。

参考

$db = DBI->connect("DBI:mysql:$dbname;host=$host", $user, $passwd);

$db->prepare("set character set sjis");

?:切り分けをするためにスクリプト側の文字コードをutf8等にしてみる。


postgresqlではdb側でsjisが使えない為2の方法しか使えません。

ちなみに

pg_query("SET CLIENT_ENCODING TO 'SJIS';");


ですが、mysqlならばdb、スクリプト双方の文字コードが一致していれば必要ないためwin環境ですので2は必要ない気もします。

2の場合毎回流さなきゃいけないのでconnectとセットにして流したいのでDBIモジュールを弄るか、ユーザー定義関数、クラスなどで呼び出すのが良いかと思います。

◎質問者からの返答

データベースとテーブル作成時に文字コードをセットするっていうのは、コマンドラインで下記のような書き方でよかったでしょうか?よろしくお願いします。

mysql> set character set sjis;

mysql> create database test;

mysql> set character set sjis;

mysql> create table addrbook (name varchar(50),telno varchar(50), email varchar(

50));

[追記]フォルダMySQLのmy.iniは、WINDOWSのフォルダにそのままコピーするだけでいいんですよね。


2 ● tenshiks
●35ポイント

1145549302の質問の方同じ方だと気づきませんで重複回答のようになってしまい申し訳ありません。


システム(my.ini)の文字セットがsjisに統一されていれば文字コードをセットする必要性もないかと思うのですが。

確実にするため明示的に作成するのであれば下記のようなSQL構文でよいかと思います。

ここで注意してもらいたいのはtable作成時にも文字コードをセットしている事ですね。


mysql> CREATE DATABASE test DEFAULT CHARACTER SET sjis;

mysql> SHOW CREATE DATABASE test;

mysql> CREATE TABLE addrbook (name varchar(50),telno varchar(50), email varchar(50)) DEFAULT CHARACTER SET = sjis;

mysql> SHOW CREATE TABLE addrbook;



蛇足かも知れませんが、MySQLAdminというフリーのGUIソフトもあります、せっかくのWindowsですしGUIでもいいような気もします。

http://www.mmdb.net/m_kaneko/

◎質問者からの返答

>1145549302の質問の方同じ方だと気づきませんで重複回答のようになってしまい申し訳ありません。

とんでもないです。お気になさらないでください。SQLの書き方ありがとうございます。時間を作って試したいと思います。

ver3.xがmy.iniの設定しなくても日本語の文字化けせずに使えたので一安心です。

引き続きver5について何かありましたらよろしくお願いします。

関連質問


●質問をもっと探す●



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