このブログのはてなブックマーク数 このエントリーをはてなブックマークに追加

知らなきゃ絶対損するPCマル秘ワザ

知らなきゃ損するPC情報を分かりやすくメモする個人ブログ。
『月,水,金』の週3回更新!(予定)

このブログ内をキーワードで検索することもできます。
Loading



最新記事
  • 内蔵HDDのクローン,外付け化ができるスタンドを買ってみた (08/18)
  • ノートPC Lenovo G570 のヒンジが壊れたので100円で修理した (08/16)
  • エクセル:カーソルが吹っ飛ぶ「Ctrl+矢印」キーを味方につける (08/14)
  • Windows:「スタート」ボタンが無反応なので小技でシャットダウン (08/09)
  • steelseries:アメリカから交換用のキーキャップを送ってくれた話 (08/07)
  • 管理人より
    2200万アクセス突破しました。ありがとうございます。

    PHP,MySQL 間の文字化け問題

    このエントリーをはてなブックマークに追加
    サーバ管理って難しい(3)

    こんにちは、さちです!

    前回の PHPMySQL の連携について書きましたが
    今回はその続編を書こうと思います。
    続きを書くというよりは自分の失敗談の続きです(笑)
    もし、この記事を書くことで他の方のお役に立てられれば幸いです!(^^)

    前回のプログラムをもう一度見てみましょう。

    ファイル名: test.php

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    <?php
    $con = mysql_connect(サーバ名, ユーザ名, パスワード) ;
    mysql_select_db(データベース名);

    mysql_query("SET NAMES eucjpms;");
    $re = mysql_query("SQL",$con);

    echo("<table border=¥"1¥">");

    while($array = mysql_fetch_array($re)) {
       echo("<tr><td>".$array[0]."</td><td>".$array[1]."</td></tr>¥n");
    }

    echo("</table>");
    ?>

    今回は5行目に注目です。
    MySQL から データを取り出すクエリを実行する前に
    「 SET NAMES eucjpms; 」というクエリが実行されています。
    実は前回は触れていませんでしたがこの行はこっそりと付けていました。
    このクエリはMySQLデータベースで使用している文字コードを何で扱っているかを
    コンピュータに教えてあげているものなのです。

    実際に私の使っているサーバでこの一行がないと
    test.php の実行結果は次のようになってしまいます。

    ?????
    ??????
    ?????

    いわゆる文字化けってやつです。
    コンピュータが処理する文字コードとMySQLの文字コードが一致しないために
    このようなことが起きてしまいます。
    (ちなみに半角英数は文字化けしません。日本語のみが文字化けを起こします)

    この test.php の場合だと
    MySQL は EUC-JP で動いているという仮定になっているので
    文字化けを回避するために 「ujis」 と記述しています。

    文字コードと記述方法をまとめてみます(完全に私の備忘記録ですがw)。

    文字コード記述方法
    SHIFT-JISsjis
    EUC-JPujis
    UTF-8utf8

    使っている文字コードを ujis のところに代わりに記述してください。
    これで文字化けは解消です。

    ただ、インターネットで検索をしてみたところ
    どうも 「 SET NAMES **** ; 」 はセキュリティ的に危険という次のような記述を
    ちらほら見かけました。

    文字コードの指定にSET NAMESを使うと SQLインジェクションに脆弱になる場合があります。 DBMSをアプリケーションから利用する場合、 文字エンコーディング設定は SET NAMES(SET CLIENT_ENCODING等も)を使わずに 必ずAPIを利用しましょう。

    うーん、わからん(-_+|)
    まず、APIって何だろうというところからすでに疑問です…
    Googleマップ API の API とは関係あるのかなぁ?

    セキュリティのことはないがしろにはできないし
    早いうちに勉強しなくてはいけませんね…。

    << 前へ | サーバ管理って難しい(3) | 次へ >>
    サーバ管理って難しいTOPへ









    このエントリーをはてなブックマークに追加




    管理人だけが読めるコメントにする(返信はしません)
    【お知らせ】
    • コメントは承認制です。反映に時間がかかります。
    • Yahoo!BBはスパムコメントが多いため一部規制中です。
    • URLを含む投稿はできません。必要な場合は最初のhを削って下さい。
    • 記事に直接関係ない個人のトラブルにはお答えできません。
    • Android は使ったことがないので質問を頂いても答えられません。
    • その他詳細はこちら





    記事別の週間アクセス数ランキングです。こちらの記事もぜひ読んでみて下さい。

    2008-2017 知らなきゃ絶対損するPCマル秘ワザ  無断転載禁止

    ブログパーツ