重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

携帯、PC、両方で使えるサイトをMySQLで構築中です。
当初、UTF8で構築していましたが、「auブラウザ、いまだにUTF-8が使えず!」という記事発見したことにより、急遽、EUCに変更しました。(http://symple.jp/113.html

ところが、EUCの場合、漢字がGETコマンドで正しく送信できないことが判明しました。
(FORMタグに accept-charset="euc-jp,us-ascii" を付けても、JIS X0208.1990 の6878文字中、2743文字の文字エンコーディングが正しく検出されず、UTF8と誤認識される。実際にテストで経験済み)
http://www-ise3.ist.osaka-u.ac.jp/miura/?PHP%20G …

私が作りたいサイトは日本語で検索できる必要があるため、やはりUTF8で作らなければならないようです。

質問です。
サーバー側はUTF8で作らなければならないようです。
でも、そうすると、「auブラウザ、いまだにUTF-8が使えず!」に引っかかってしまいます。
このようなサイトは決して少なくないと思いますが、UTF8にも関わらずでAU携帯でも問題なく見れるサイトはどのような工夫をされているのでしょうか?

●MySQLサーバーのデフォルト文字コード
●MySQL の接続照合順序:の文字コード
●テーブルの文字コード
●テーブルの接続照合順序:の文字コード
●フォームの文字コード

をどう設定しているのでしょうか?

またPHPのソースに何かを追加するのでしょうか?

情報提供、宜しくお願い致します。

現在の検索ソースは下記となります。
(県名を漢字で入力し、住所群から対象の住所録を抽出する)


search.php
<?PHP
// サーバーデータベース記録情報接続
require_once '../../config_n_reform.php';
require_once '/usr/share/pear/DB.php';
$db = DB::connect($dsn);
if (PEAR::isError($db)) {
die($db->getMessage());
}
print('接続に成功しました<br>');
$db->query('SET NAMES UTF8');
if (PEAR::isError($db)) {
die($db->getMessage());
}
$sql = 'select * from city_code';
if(isset($_GET['pre_name'])){
$sql = "select * from city_code where pre_name = '" .addslashes($_GET['pre_name'])."'";
}
$res =& $db->query($sql);
if (PEAR::isError($res)) {
die($res->getMessage());
}
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
print($row['pre_name'].'<br>');
print($row['city_name'].'<br>');
print($row['city_kana'].'<br>');
print($row['kyuu_cho'].'<br>');
}
$db->disconnect();
?>



フォーム
<form name="form2" action="search.php" method="get">
<input type="text" name="pre_name" size="25">
<input type="submit" name="search" value="検索"><br />
<input value="pre_name検索開始" type="submit" />
</form>

A 回答 (2件)

AU(古いやつ?)はフォームをGETで送る時にSJISで送られているようです。


なのでEUCにするくらいならSJISをチョイスした方がいいのかな、と。
結局文字化けとは戦わないといけないですけどね。
僕は業務レベルで全部UTF-8派ですけど客から文句言われた事は一度もないです。

とりあえずUTF-8で作るようですので
mb_convert_encoding($_GET['pre_name'],'UTF-8','UTF-8,SJIS,EUC-JP');
これで文字コードを変えてから検索すれば大丈夫です。
    • good
    • 0
この回答へのお礼

有難うございます。やはり、UTF8でサーバーを作り、フォームはエンコードを付けるものなのですね。勉強になりました。有難うございました。 ソースも参考とさせていただきます。

お礼日時:2011/07/28 21:12

携帯はSJISベースで行うのが妥当、SQLはUTF8で問題ないです。


検索用にデータを投げる際に、エンコード情報をつけるのが賢明。
    • good
    • 0
この回答へのお礼

有難うございます。やはり、UTF8でサーバーを作り、フォームはエンコードを付けるものなのですね。勉強になりました。有難うございました。

お礼日時:2011/07/28 21:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!