IPアドレス・ネットマスクの変換・チェック・統合・除外、国判定を簡単に。

こんな機能欲しいけど、自分で作るの面倒くさい!みたいな思いつきを
是非Twitterで意見投げてみてください。
時間は掛かるかもしれませんがコツコツ頑張るかも!?
Twitterリンクは下部)

IPアドレスから地理的位置情報(GeoIPLocation)の検索機能を公開しました。

Google or AdMax Promotion (ipvtop)

MySQLのエンコードを一時的に指定してデータを表示(取得・SELECT)する

MySQLにデフォルトエンコード以外のエンコードでデータを格納し、
そのデータをSELECTで取得して表示する場合にも、エンコードに気を払う必要があります。
その点をスルーしてしまうと、いつまでたっても文字化けが解消されないと悩むことになります。
実際には正しく指定したエンコードでデータが格納されているにも関わらず。。。

MySQLのエンコードを一時的に指定してデータを表示(取得・SELECT)する

プロモーション

Google or AdMax Promotion (ipvpos)

今までは、データベースのデフォルトエンコードと異なるデータを、
データベースに突っ込むなんていう面倒には出逢わなかったので、
気にしたこともなかったのですが、

どうしてもデフォルトエンコードと異なるデータを投入する必要が出た場合、
INSERT、及びSELECT双方でしっかりエンコードを意識して処理する必要があります(当然)

以下で紹介したデータを投入したデータベースから、
データを取得して表示する場合の例についてご紹介します。

 

その前に、どうせならデフォルトエンコードを変更すればいいじゃないかという話もあるかもしれません。
UTF-8からutfmb4の変換ならたぶんやっちゃって問題はないんだと思います。
でも、レンタルサーバーだとそういう選択が出来なかったりもする訳で悩ましい限り。

ちなみにXSERVERであればMySQLデータベース作成時にエンコードが選択できます。

MySQL文字コード EUC-JP/UTF-8/Shift-JIS/Binary から選択可

これはデータベースのデフォルトエンコードを、
「utfmb4」や「cp932」にする事はできないという事です。
必要があれば、個別に対処する必要が発生します。

 

さて、投入したデータをPHPで取得して、表示する際のソースでご紹介します。
以下でご紹介したものです。

3行目で結果を取得するエンコードを決定し、15行目で以下のSQLを発行しています。

set character_set_results = utfmb4;

変数にしているのは、別途「sjis」「cp932」としてデータベースからエンコードを指定して、
データを受け取る場合がある為です。

それぞれ、以下のようになります。

set character_set_results = sjis;
set character_set_results = cp932;

MySQLからは格納されているエンコードのまま結果を受け取り、
今回はPHP側でエンコードを変換して、表示を行うという処理です。

24,25,26行目の部分がPHPでエンコードを変更している部分です。

sjiscp932は、UTF-8にエンコードを変換しますが、
utfmb4はそのままUTF-8として表示しています。

これは4byte表現が必要なUnicode文字がMySQL側の仕様で格納ができないだけで、
Web表示的にはUTF-8として正常に表示ができる為です。

実際の表示は以下でご確認いただけます。

 

尚、今回利用しているデータ、構造は以下で利用したもので検証しています。
格納されるテーブル側も目的のエンコードに合せたテーブル構造としています。

 

参考

データベースにsjiscp932にてデータが格納されている場合に、
MySQLWorkBench(クライアントデフォルト:UTF-8)でデータを取得すると、
エンコードを意識することなく、データの参照は可能でした。

しかし、utfmb4でデータが格納されている場合に、
同じようにMySQLWorkBench(クライアントデフォルト:UTF-8)でデータを取得すると、
4byte表現の必要がある外字は「?」として表示されてしまいました。

この場合、SELECTを発行する前に、
set character_set_results = utfmb4;と指定してデータを取得すれば、
「?」の文字化けは解消することができます。

もし、文字化けが発生してしまって困る場合には、
まずデータベースの格納されているエンコードに合せてデータを取得して表示してみると、
問題の解決に繋がるかもしれません。

 

尚、デフォルトエンコードの確認は以下手順で行えます。


AdMax Promotion

公開日:
最終更新日:2019/06/20

シェア頂けると新機能開発の励みになります!!

最後までお読みいただきありがとうございました。
便利!と思って頂けたらシェアを是非お願いします。
ご意見・ご批判でも感じた事を気にせずご指摘ください。

アカウント新規作成の為、是非フォローもお願いします。(無言OK)

※このページでこんな情報も一緒に見れたら便利!などの
アイディア・ご意見もお聞かせください。

また弊サイトはすべて広告費と個人の自腹にて運営・開発を行っています。
皆様、お仕事中でお忙しいことと存じますが、
ご興味がおありの広告が目に留まりましたら
広告主様のサイトもご覧いただけますと励みになります。

QRコードからもこのURLを開けます。
リンク先URL: https://ipvx.info/everyones-db/mysql/select-change-encoding/


AdMax Promotion

サイト内コンテンツ
すべて展開 | すべて省略

Google or AdMax Promotion (ipvlink)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください