mb_convert_encodingで外字はエンコーディング変換される?

ちょっと気になったので、mb_convert_encoding で外字がきちんとコード変換されるか確認してみました。

Windowsの外字エディタで外字を登録して、mb_convert_encoding()を使って sjis-win、utf8、utf16 それぞれに変換後、文字コードを出力してみました。

SJIS:F040(unicode:E0000)

■SJISから変換

sjis-win: f040

utf8: ee8080

utf16: e000

■UTF-8から変換

sjis-win: f040

utf8: ee8080

utf16: e000

SJIS:F9FC(unicode:E757)

■SJISから変換

sjis-win: f9fc

utf8: ee9d97

utf16: e757

■UTF-8から変換

sjis-win: f9fc

utf8: ee9d97

utf16: e757

きちんと変換されています。

ただ、ブラウザに表示すると IEではクライアントPCに登録されている外字がきちんと表示されますが、Chromeでは正常に表示されず□で表示されました。(HTML上かブラウザの設定で表示させる方法があるのかも。)

データとして取り扱うには問題なさそうですね。

(あれっ?システムの外字対応の為に、PHPソースやDBの文字コードは、UTF-8でも問題ない?)

ちなみに、文字コードの16進数表記は bin2hex() 関数を使用しました。(ぐるぐる回してord()関数の結果を接続する方法より簡単です。)

では。

カテゴリー: php

Word2007以降は描画キャンパス内じゃないとドラッグでオブジェクトを選択できない

ワードで「選択-オブジェクトの選択」の状態で、ドラッグでオブジェクトを選択できる時とできない時があるなぁって思っていたら、2007形式(.docx)は描画キャンパス内じゃないとドラッグでオブジェクトを選択できないようです。

97-2003形式(.doc)で保存すると普通にドラッグでオブジェクトの選択ができます。

結構不便です。慣れると描画キャンパス置いて、そこに図形を配置していく方法が便利になるのかもしれませんが。。。

とりあえず2003形式でいいやって感じです。

 

 

 

 

エクセルのファイル形式(xlsx、xlsm、xlsb)の違い

エクセル2007以降で採用されたファイル保存形式に、xlsx、xlsm、xlsbがありますが、どういう違いがあり、どう使い分ければいいのか、ちょっと検証しました。
※拡張子(xlsx、xlsm、xlsb)は、拡張子をzip等にして解凍すると内部的なファイル構成を確認できます。

■xls(2003形式):マクロ無し ※互換モードで実行

ファイルサイズ:約120MB

起動:約7秒

マクロ実行:約4分

■xlsx:マクロ無し

ファイルサイズ:約46.5MB

起動:約20秒

マクロ実行:(不可)

内部ファイル形式:バイナリ

■xlsm:マクロあり

ファイルサイズ:約46.2MB

起動:約24秒

マクロ実行:約1分

内部ファイル形式:xml +VBA(.bin)はバイナリ
※VBAの情報はテキストソースであるのかもと思いましたが、やはりバイナリでした。

■xlsb:

ファイルサイズ:約28.2MB
※ちなみにxlsで120MBのファイルをzipで圧縮した29MBとほぼ同等です。

起動:約7秒

マクロ実行:約1分

内部ファイル形式:ほとんどバイナリ(.bin)ファイル

 

マクロ入りでエクセル2003以前で動かさなくていいなら、xlsb(バイナリ形式)が一番パフォーマンスが高いようです。(データ量やマクロの処理内容にもよるかもしれませんが。)

 では。

 

GMailの便利な設定(Labs)

GMailの設定-Labs の機能は実験的な機能をテストする場であり、ここにある機能は随時変更中断提供中止されることがあるらしいのでそれを前提でご利用ください。

私がいいなと思った設定です。

・Google カレンダー ガジェット
・Google ドキュメント ガジェット
GoogleカレンダーやGoogle ドキュメント(Googleドライブ)を利用されている方には便利です。

・プレビュー パネル
クリックした記事の内容を別フレームでプレビューできます。

・別スタイルの署名
「返信」とすると、本のメールの上に署名が表示されます。
私はこの機能があるのを知らず、毎回切り貼りしてました。

・常に全員に返信
普通、CCがあればCCの方にもCCで返信する、という場合は便利

PHPで複数の値をorで比較

条件文を||でたくさん区切っていくより下記がすっきりします。
単純な場合は、switchがいい時もありますが。

if(in_array($val, array(‘あ’,’い’,’う’))){
echo “Hit!”;
}else{
echo “NG”;
}

カテゴリー: php