日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP事はじめ » MySQLの文字コードをphpソース上で表現する方法について

MySQLの文字コードをphpソース上で表現する方法について

ページ: 1

投稿者 投稿
会員
登録者: 7 2009
返信数: 3
初めて質問させていただきます。
MySQLやPHPの学習を初めてまだ3ケ月の初心者ですがよろしくお願いします。

会社で今回PHPを利用したWebシステムを構築しているのですが
ローカルPC上で、Xamppを利用した Windowsシステムでテストして正常に動作していた test.php を
利用しているレンタルサーバーにアップしたところ日本語が表示されません。
原因が何処にあるのか判断できず、サーバー担当者に問い合わせしても
サポート対象外との事で具体的なアドバイスが受けれなくて困っております。

<環境>
レンタルサーバー会社:GMOインターネット株式会社
http://www.kantan-server.jp/
MySQL version:5.0.37
MySQL の文字セット: UTF-8 Unicode
PHP version:5.2.1
詳細は http://www.heroine.co.jp/member/phpinfo.php で確認できます。

<MySQL にてすとテーブル作成>
テーブル名 :tbl_TEST
テーブル内容:項目01 fild01 varchar(10) "Heroine"
       項目02 fild02 varchar(10) "株式会社 ヒロイン"
       項目03 fild03 varchar(20) "これはphpテストです。"
を作成しました。

<てすとPHPソース作成>
PHPソース名:test.php
<?php

header("Content-Type: text/plain; charset=EUC-JP");
require_once("data/config.php"); // 設定をインポート
$con = mysql_connect($DB_HOST,$DB_USER,$DB_PASS) or die("[Error:MySQL_Connect] システムエラーです");
$sdb = mysql_select_db($DB_NAME,$con) or die("[Error:MySQL_Select_db] システムエラーです");
$rec = mysql_query("SELECT * FROM tbl_TEST ORDER BY fild01",$con);
$row = mysql_num_rows($rec);
$cnt = 1;
while($Farray = mysql_fetch_array($rec)) {
$tmp_fild01 = $Farray[0];
$tmp_fild02 = $Farray[1];
$tmp_fild03 = $Farray[2];
$cnt++;
}
mysql_close($con);

echo "=== てすとテーブル =====================================================\n";
echo "項目01:" . $tmp_fild01 . "\n";
echo "項目02:" . $tmp_fild02 . "\n";
echo "項目03:" . $tmp_fild03 . "\n";
echo "========================================================================\n";

?>

実行URL: http://www.heroine.co.jp/member/test.php
※PHPのソースはEUC-JPで保存し、ブラウザへEUC-JPで出力する様に記述しています

<実行結果>
=== てすとテーブル =====================================================
項目01:Heroine
項目02:?????????
項目03:???php??????
========================================================================
となってしまいます?

<問題点>
テーブルより参照した項目の半角英数字は正常に表示されるのですが、日本語の部分のみ ? で表示されてしまいます。
原因が判断できません。何方かアドバイスいただければありがたいのですが・・・

このレンタルサーバーには独自の php.ini を設置できるとありますので
これを設置すると解決出来るのかもしれませんが、サポート対象外との事で
詳しい内容は担当者からアドバスいただけませんでした。
php.ini の記述箇所等もアドバイスいただければ、ありがたいのですが・・・
よろしくお願いします。 :(
管理者
登録者: 10 2005
返信数: 7

$rec = mysql_query("SELECT * FROM tbl_TEST ORDER BY fild01",$con);


の前に


$rec = mysql_query("SET NAMES ujis",$con);


という行を追加するとどうでしょう?
おそらくmysql内での文字コード指定がうまくいってないか、
mysql内部で文字コードの自動変換がおこなわれています。
会員
登録者: 7 2009
返信数: 3
アドバイスありがとうございます。

$rec = mysql_query("SET NAMES ujis",$con);
を追加したところ正常に表示されました。
本当にありがとうございました。

ページ: 1

日本PHPユーザ会 掲示板 » PHP事はじめ » MySQLの文字コードをphpソース上で表現する方法について

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています