お勉強 :  php の fgets で UTF-16LE の行が途切れる 

UTF-16LE のテキストファイルを処理する用事があり、php の

fgets で1行ずつ読み込むようスクリプトを書いたのですが、

たまに処理ができない行があることに気付きました。


var_dump とかしながら確認してみると、fgets の返り値と

して1行の途中までしか読み込まれていなかったので、

それ以降入っていることを前提としていた部分が動いて

いないのでした。


調べたところ、日本語の「伊」以降が読み込めない。

なんで?と思ったら、これを  UTF-16LE では 0x0A4F と

なるので、fgets 的には前の 0A を改行文字として認識

していたからこうなっていたようです。


どうやって対策するんだろうと悩みましたが、fgets を

以下に置き換えうることで対応しました。


# 事前に定義(このスクリプトはSJISだった

$delimiter = mb_convert_encoding("\r\n", "UTF-16LE", "SJIS");


# fgets 部分

# while($row = fgets($fp, 1024)){

while($row = stream_get_line($fp, 1024, $delimiter)){


デリミタとして CR+LF を UTF-16LE としたものを作り、

stream_get_line の第三引数として渡すので、当初の

fgets と同じ要領で使えるようになりました。


さて、今晩の体重は 78.4kg でした。



[ 2017/11/21 22:43 ] お勉強 | TB(0) | CM(0)

お勉強 :  オンライン講習開始 

情報処理安全確保支援士のオンライン講習が始まりました。

私の場合は講習Cという、ある意味「試験合格からしばらく

時間がたっている人向け」の内容らしい。


これだけで資格維持費的に1年2万円かかるわけですが、

どんな内容なんだろうと受講すると、基本は50ページちょっと

ある資料を3~40分かけてじっくり読んで理解して、

その後理解度テスト100点でクリアになり、それを

6科目ほど行うようです。


中には最近のセキュリティのトレンドなど比較的わかり

やすいものもあるほか、私が苦手なISO規格やマネジメント

システムに関わるとこなど、以前受けた情報セキュリティ

スペシャリスト試験をもう一度勉強しているような感覚

にもなってしまった。


平日だと2科目くらいしか進める時間がないけど、

これなら1週間もあればオンライン講習は終わりそうです。


さて、今晩の体重は 79.4kg でした。



[ 2017/10/26 23:01 ] お勉強 | TB(0) | CM(0)

お勉強 :  古いMysql→新しいMysqlの移行方法を考える 

ひょんなことからMysql Ver.3 くらいで稼働しているデータを、

ごっそりと抜き出して最近のバージョンへ適用して、同じように

データを回覧できる必要が出てきました。


ネット上を見て回ると、いろいろと「うまくいかない」という

ネタが多く、先人の方々もいろいろと苦戦されていたようです。


以前動作確認した限りだと、一度インポートできてさえしまえば、

それ以降は割とさっくり動いてしまうようではあったものの、

文字コードやらバージョンによる仕様の違いやらを考慮しないと

いけない。


しばらくは空き時間を見つけて、インポートのやりかたを

考えることになりそうです。


さて、今晩の体重は 80.3kg でした。



[ 2017/10/12 22:48 ] お勉強 | TB(0) | CM(0)