文字コードについての基礎知識
文字コードについての基礎知識
Software Design 2016年12月号の特集文字コード攻略マニュアルを読んで、自分用にまとめておく
符号化
文字をビット列で表すこと
例)じゃんけんの種別を符号化したもの
文字 | 符号 |
---|---|
グー | 00 |
チョキ | 01 |
パー | 10 |
文字コード
どの文字をどのようなビット列で表現するか
文字化け
表現と解釈のルールが一致しない場合、情報を正しく扱うことができない
文字コードは視覚的な表現について責務を持たない
その文字がどのように視覚的に表現されるか決定するのはフォント
文字コードの種類
ASCII
American Standard Code for Information Interchangeの略
文字コードの祖先EUC-JP
Extended UNIX Code Packed Format for Japaneseの略
UNIX上で日本語の文字を扱う場合にもっとも多く利用されているShift_JIS(SJISとも呼ばれる)
かつては日本語環境でのデファクトスタンダードCP932
MicrosoftによってShift_JISが拡張されたもの
NEC特殊文字、NEC選定IBM拡張文字、IBM拡張文字が含まれるUTF-8
1文字が1~4バイトで表現される可変長の符号化方式
1バイト文字はASCIIそのものなので、上位互換として普及
ひらがなや漢字は3バイトで表現される
MySQLで副問い合わせによって取得した複数のキーでデータを削除する
MySQLで副問い合わせによって取得した複数のキーでデータを削除する
MySQLで副問い合わせによって取得した複数のキーでデータを削除したい
主キー(id)に serialNo を追加し、複合主キーにしようとしたが、serialNo に同じ値が入っており、主キー制約を変更できなかった
重複する項目を削除する際に、少し悩んだのでメモしておく
-- 重複行を特定し、主キーだけのビューを作成 CREATE VIEW v_dummy AS SELECT id, serialNo FROM t_hoge GROUP BY id, serialNo HAVING COUNT(*) > 1; -- 重複行を削除 DELETE FROM t_hoge WHERE (id, serialNo) IN (SELECT id, serialNo FROM v_dummy); -- ビューを削除 DROP VIEW v_dummy;
一度ビューを作成する理由は、副問合せで利用したテーブルをそのまま削除することができないため
MySQLでランダムな整数値を取得する方法
ランダムな整数値を取得する方法
MySQLで INT 型のレコードの値をランダムに更新する
例)id列を 0 ~ 10で更新する
UPDATE hoge SET id = ROUND(RAND() * 10);
例)id列を 1 ~ 10で更新する(最低値を1にする)
UPDATE hoge SET id = ROUND(1 + RAND() * 9)
PHPで生年月日から年齢を計算する
PHPで生年月日から年齢を計算する
(現在日付 - 誕生日) / 10000
※10000で除算することで、小数点以下を切り捨てる
<?php $currentDate = date('Y/m/d'); $birthday = '1967/11/07'; $c = (int)date('Ymd', strtotime($currentDate)); $b = (int)date('Ymd', strtotime($birthday)); $age = (int)(($c - $b) / 10000); /* 結果 var_dump($c); var_dump($b); var_dump($age); int 20170620 int 19671107 int 49 */