![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
環境
Windows XP
ApacheFriends XAMPP (basic package) version 1.6.6a
再々投稿です。もう本当にお手上げ状態です・・・
(http://oshiete1.goo.ne.jp/qa4147638.html)
hrm_mmm様、いろいろとありがとうございました。
下記設定でも、文字化けが発生します。
XAMPPで文字化け解決された方、いらっしゃいませんか?
何かヒントをお願いします・・・助けてください。
★mysql★
#This File was made using the WinMySQLAdmin 1.4 Tool
#2008/07/09 10:24:05
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysql]
default-character-set =ujis
[mysqld]
default-character-set =ujis
skip-character-set-client-handshake
basedir=C:/xampp/mysql
#bind-address=xx.xx.xx.xx
datadir=C:/xampp/mysql/data
#language=C:/xampp/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=c:/xampp/mysql/bin/mysqld-nt.exe
user=root
password=1234
[mysqldump]
default-character-set =ujis
★PHP★
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = PASS
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 7
★ソース★
$dbconnect = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die("サーバーに接続できません");
// データベース セレクト
mysql_set_charset("ujis");
mysql_query("SET NAMES ujis",$dbconnect) or die("文字設定ができません");
mysql_query("SET CHARACTER SET UJIS",$dbconnect) or die("文字設定ができません");
mysql_select_db(DB_NAME,$dbconnect) or die("データーベースに接続できません");
ソースは全てEUCで記述しています。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
私も xampp を利用して PHP と MySQL を使っています。
設定はいろいろやって結局よくわからなかったのですが、初期値のままでも文字化けしないような気がしています。
あまり関係ありませんが PHP のバージョンは 5 でしょうか。
私はいつも 4 を使っていますが、これもよくわからないまま設定を変えてしまっているので、xampp の機能で 5 に切り替えてみてテストしてみました。
たぶん 5 としては初期値のままです。
文字化けはしたりしなかったりでした。
実はHTMLの事もよくわかっていません。
質問者様がどの時点で文字化けが発生しているのかわからないので、私がテストした内容で説明していきます。
ソースは EUC-JP で記述しています。
エディタがそう表示しているのですが、たぶん ujis と同じコードだと思っています。
あと、ブラウザ側のエンコードとやらで現象がかわってくるかも知れません。
1.これだけだと「あいう」が文字化けしました。
<?php
echo "abcあいう";
?>
2.PHPの部分は同じですが、これだと文字化けしませんでした。
<html>
<head>
<title>テスト</title>
</head>
<body>
<?php
echo "abcあいう";
?>
</body>
</html>
以上、ただ単に文字を表示したら文字化けするかどうかのテストです。
3.MySQLからデータを読み込んで表示すると文字化けしました。
<?php
$dbconnect = mysql_connect("localhost","user","") or die("サーバーに接続できません");
// データベース セレクト
mysql_set_charset("ujis");
mysql_query("SET NAMES ujis",$dbconnect) or die("文字設定ができません");
mysql_query("SET CHARACTER SET UJIS",$dbconnect) or die("文字設定ができません");
mysql_select_db("test",$dbconnect) or die("データーベースに接続できません");
$sql = "select * from test_1";
$res = mysql_query($sql,$dbconnect);
$row = mysql_fetch_assoc($res);
?>
<html>
<head>
<title>テスト</title>
</head>
<body>
<?php
echo $row["name"];
?>
</body>
</html>
テーブル test_1 には name と言う項目があって、そこに「abcあいう」を入れています。
test_1 は phpMyAdmin で作成し、データの挿入もそこからしています。
テーブル作成時に表示されたSQLです。
CREATE TABLE `test`.`test_1` (
`code` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 64 ) NOT NULL ,
PRIMARY KEY ( `code` )
) ENGINE = MYISAM
データ挿入時に表示されたSQLです。
INSERT INTO `test`.`test_1` (
`code` ,
`name`
)
VALUES (
NULL , 'abcあいう'
);
実は、この時、ワーニングが発生していました。
Warning: #1366 Incorrect string value: '\xE3\x81\x82\xE3\x81\x84...' for column 'name' at row 1
データの挿入はされたようですが、ワーニングが出てます。
phpMyAdmin でデータを確認すると、「abc???」になっています。
4.新たにテーブル test_2 を作成してテスト。
PHPのソースは test_1 が test_2 になるだけです。
テーブル作成時に表示されたSQLは、今度はこうです。
CREATE TABLE `test`.`test_2` (
`code` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 64 ) CHARACTER SET ujis COLLATE ujis_japanese_ci NOT NULL ,
PRIMARY KEY ( `code` )
) ENGINE = MYISAM
作成する時の項目の設定で、照合順序のところで「ujis」の「ujis_japanese_ci」を選択しました。
同じようにデータを挿入すると、今度はワーニングが出ませんでした。
phpMyAdmin でデータを確認すると、正しく表示されました。
3のソースを test_2 にしたものを実行すると、文字化けしませんでした。
結果、問題はデータベース側の文字コードかなと思っています。
現在のデータベースの照合順序、項目の照合順序を確認してみてください。
私の文字化けした test_1 の項目は「latin1_general_ci」でした。
データベースも「latin1_general_ci」となっていました。
データベースを作成する時に、データベースの照合順序を「ujis_japanese_ci」にしておけば、テーブル作成時にはそれが初期値とされ、項目ごとに設定する必要はなさそうです。
とりあえず、PHPとMySQLの設定はそのままで、データベースの照合順序を確認してみてください。
dell_OK様
本当にありがとうございます。
データベースを作成する時に、データベースの照合順序を「ujis_japanese_ci」にしておけば、
テーブル作成時にはそれが初期値とされ、項目ごとに設定する必要はなさそうです。
これですべてが解決しました。
文字化けも発生せず、ujisで使用することが可能となりました。
実は、諦めてUTFにすべて変えようと考えていたところでした。
本当に、本当にありがとうございました。
No.4
- 回答日時:
ANo.3のchukenkenkou様、参考記事のURLありがとうございます。
私がお礼を言うのも筋違いですが、勉強になりましたので感謝です。
my.cnfの3行の変更と追加だけで、解消されるんですね。
私が最初に手にした本では、詳しくではありますが、
他にもいろいろと設定があったので、どれがどう関係してくるのか、
いまいち理解できずにいました。
この3行だけでデータベース側はよさそうなので、
しばらく、これで使用して、動作確認をしようと思っています。
ただ、記事に載っているXAMPPのバージョンが 1.6.6a でないのか、
インストールされたmy.cnfを直接修正しようとしても、
この3行の位置はありませんでした。
この記事の前の記事を読もうとしたのですが、
記事サイトのリンクがうまくいってないのか記事一覧しか読めなくて、
詳しくは確認できませんでした。
なので 1.6.6a の使用の際の注意として、
初期インストールされる my.cnf は使わずに、
それは名前を変えて置いておくとして、
my_example.cnf を my.cnf でコピーして、
これに対して、例の3行の変更追加をすれば、
この問題は解決されると言う事になるかと思います。
初期のmy.cnfとmy_example.cnfの相違はよくわからないので、
あくまで、初期にほど近い設定と言う事での使用になると思います。
No.3
- 回答日時:
ずいぶん返信がおそくなり、申し訳ありません。
非常に参考になる記事をありがとうございます。
最近、検索してもBLOGばっかりHITしたり
目的のサイトを見つける検索ワードが思いつかなかったり、
検索も大変になってきました。
情報が多すぎて・・・
本当にありがとうございます。
No.2
- 回答日時:
ANo.1の補足。
「ブラウザのエンコード~」については、以下のタグで解消されるのかな。
<head> の次に、以下のタグを挿入してください。
<meta http-equiv="Content-type" content="text/html; charset=euc-jp">
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
#1062 - '0' は索引 'PRIMARY' ...
-
SQLです教えてくださいお願いし...
-
utf8bomとutf8mb4の違いがいま...
-
テーブル名が可変の場合のクエ...
-
SQLで日付別のIDを生成するには
-
うまくいきません教えてくださ...
-
SQLでカラムを追加し、条件に合...
-
SQLです教えてください。
-
エラー 1068 (42000): 複数の主...
-
MySQLのテーブル作成でハイフン...
-
SQLについて質問です。 SELECT ...
-
データベースの接続に失敗して...
-
SQL文のエラー
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
「総降水量が100mm以上になる...
-
SQLで漢字名称を都道府県や市区...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
円マークが付加されて保存され...
-
MySQLでshal()関数のエラーがで...
-
PHP,MYSQLで検索が出来ません。...
-
Mysqlにhtmlのフォームから...
-
文字化け:xamppを利用したphp...
-
【PHP・MySQL】一文字だけ抜き...
-
ズブの素人です。mysqlについて...
-
Shift_jisの『十』を含む文字列...
-
実行時エラー3131 FROM 句の構...
-
MySQLでデータベースにデータin...
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
Pro*Cの構文エラー
-
PHPで[]の使い方について
-
エクセルVBAについて
-
insert1つの処理でもトランザ...
-
エラー3011
おすすめ情報