スレッド表示 | フラット表示〕 全トピック 920 件中 467 番目 次≫ ≪前

PHP4.3.10&MySQL 4.1 文字化け発生

created: 2005-03-03 01:32 | modified: 2005-03-03 15:15 | reply: 3

[2152] PHP4.3.10&MySQL 4.1 文字化け発生

user: さすけ | created: 2005-03-03 01:32
今までMySQL3.23.53&PHP4.3.2でなんの問題もなくサイトをやっていたのですが、今度Hostingの関係で、MySQL4.1&PHP4.3.10を使用しなければならなくなってしまいました。MySQLでの文字化けの問題はとりあえずクリアし、phpMyAdmin上で見る限りは文字化けしていません。しかし、これをphpでウェブページ上に読み込むとすべて????になってしまいます。 
php.iniファイルのなかでcharacter-setか何かでsjisにすればいいのでしょうか? それとも、phpMyAdmin上で文字化けしていないけれども、実は文字化けしてデータをインポートしてしまっているのか???
だれかヘルプしてください。
reply: 2153 2155 返信 編集 削除

[2153] たとえば・・・

user: siu-kaido | created: 2005-03-03 10:45
おはつで書き込みさせてもらいます。
ウェブページに表示させる時にmb_convert_encodingを使ってみるのはどうですか?面倒かもしれませんけど、僕はその方法で解決させてます。
(php.iniにはできるだけ触れたくない小心者ですので・・・)
Parent: 2152  reply: 2154 返信 編集 削除

[2154] 既に試したけどだめでした。

user: さすけ | created: 2005-03-03 11:41
返信していただきありがとうございます。
でも、もう既にそれは試してみたけど駄目でしたので今回ここに投稿してみた次第です。
MySQLのcharsetがsjisに対してPHPのphp.iniファイルの中でデフォルトでsjisにしなければいけないのかとも思ったのですが、config fileにアクセスできないので・・・。
誰か他に方法ご存知ありませんか?
Parent: 2153  返信 編集 削除

[2155] ini_set が使えます。

user: ゆうじ | created: 2005-03-03 15:15
先ずは、phpinfo() で、
現在のマルチバイト周り(mb_string)の設定を確認して下さい。
デフォルトのままだと何も値が設定されてないはずです。

そして、マルチバイト周りの設定は、
スクリプトからも指定できますので
以下のコードをスクリプトの始めに書いてお試しください。

PHPのソースコードがShift-JISの場合です。
// マルチバイトコードに日本語を設定
mb_language('Japanese');

// PHPがリクエストから受け取る文字コードの設定
ini_set('mbstring.http_input', 'auto');

// PHP内部(ソース及びデータ)の文字コードを設定
ini_set('mbstring.internal_encoding', 'SJIS');

// ブラウザに出力される文字コードを設定
ini_set('mbstring.http_output', 'SJIS');

もしスクリプトの文字コードがEUCなら、次の部分を直しておいて、
// PHP内部(ソース及びデータ)の文字コードを設定
ini_set('mbstring.internal_encoding', 'EUC-JP');

さらに、MySQLから値を引っ張り出した時点で
内部エンコードに変換しておけばいけるかと思います。
$value = mb_convert_encoding($value, 'EUC-JP', 'SJIS');
Parent: 2152  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 467 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑