Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
84 / 114 ツリー <前へ | 次へ>

〔44〕自動かな漢字/別名変換、屋号抜き農薬名分類に関する動作確認のお願い Hidemi Oya (05/10/18 22:07)

〔202〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/04 13:22)
〔205〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/04 17:31)

〔202〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/04 13:22)

引用なし
   >Hidemi Oyaさん

> perl 側の encoding プラグマは関係ないと思いますけど…。MySQL にアジアンランゲージサポートか cp932 キャラクタセットがインストールされてないとか?

mysqlのバージョンは3.23.58です。FedoraCore3に付いていたものを使っています。

一応、my.confには
−−−−−−−−−−−−−−−−−−−−−−−−−−−
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=ujis

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=ujis
−−−−−−−−−−−−−−−−−−−−−−−−−−−
とujisを指定して、

mysql> SHOW variables like "cha%";

| character_set | ujis
| character_sets | latin1 big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin2 latin5 swe7 usa7 win1250 win1251 win1251ukr ujis sjis tis620 |

という状態で使っています。再コンパイルなどは行っていません。

encodingプラグマを使わなければ基本的に生データでやりとりできますが、プラグマを使うと入出力時に必ずフィルタ処理が掛かります。で、utfフラグが立った状態、フラグ無しeucjp、フラグ無しutf8、といろいろなパターンで日本語文字列をmysqlに書き込んでみましたが、いつもutf8でデータが書き込まれるのです。

何か設定が違うのかもしれませんが、これ以上仕様を変更して自分のシステムに不具合がでても困りますので、対処療法でしのいでいます。

〔205〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/04 17:31)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

MySQL 3.x はよく分かりませんが、少なくとも MySQL 4.1 以降では、データベース作成時に文字コードを指定すればそれで保存され、データベースの文字コードにかかわらず、SET CHARACTER SET で指定した文字コードで接続/入出力が行われる(データベース内と入出力の文字コードが異なる場合は MySQL が自動的に変換する)と書かれています(もっとも、MACS for acis 3.x は元データが UTF-8、携帯農薬実験室のトピックは RSS 配信が UTF-8 のため、MySQL を UTF-8 でしか使ったことがないのでこれを確認したことはありませんが^^;)。
 で、これからいうと、[#197] で書いたいずれかの方法で EUC-JP で使えるのではないかと思ったんですが、それに対しての回答はなかったので、「試してみたけどダメだった」と解釈しました。とすれば恐らく MySQL 側の問題と考えられるため、
> perl 側の encoding プラグマは関係ないと思いますけど…。
と書いた次第です。
 が、perl 5.8.0 だと encoding プラグマの全ての機能を利用できないので、影響が出ることがあるかもしれません。また、DBI モジュールがデータベース接続及び入出力に PerlIO レイヤを経由していない場合、perl5.8.0 以降では encoding プラグマを使っていても接続及び入出力は UTF-8 になりますね。

 考えてみたら、ECU-JP でレコードを書き込んで、それが自動的に UTF-8 に変換されて保存されているということは、[#200] で書いたような原因でもなさそうです。となると、DBI モジュールですかねえ?
 PHP も UTF-8 で使うのが無難ですから、複数処理系から利用できる汎用的なデータベースを構築する際は、機種依存文字やデータサイズに目をつぶっても UTF-8 ベースにしておくのが無難かもしれませんね。

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
84 / 114 ツリー <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.