お勉強 :  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)

GT Sports :  初優勝した 

寝る前にもう1レースでも、と思ってスポーツモードで対象コースに

なっていた、ニュルブルクリンク24Hに挑んでみたところ、

ラッキーにラッキーが重なって初優勝しました。


この前の土日に遊んでいた感じだと、このコースは私で8分40秒台の

タイムで、早い人なら30秒台のタイムみたいな感じでした。

ただ、エントリーは10分前から可能になるので、いきなりタイム

トライアルをすると、ミスができない状況になりました。


わたしは25分くらい前から覚えるつもりで走り続けていて、

自分なりにタイムが取れた!と思って挑んでみると、ラッキーな

ことにほかの方々はタイムトライアルしていないようでした。


おかげでレース前の画面に映りこむくらいの位置からスタート

できたのですけど、更に運が良かったのか、先でクラッシュが

起こり、割と早めに1位に浮上してしまった。


これはやばい、と思いながらミスしないよう気を付けつつ、

できる範囲でなるべく早く走っていたら、最後のほうは

後ろとタイムを縮められて追い付かれつつも、無事に1位で

ゴールできたのでした。


幸運が続いただけなのですけど、こんなこともあるんですね。

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



[ 2017/11/20 23:29 ] GT Sports | TB(0) | CM(0)

日常 :  水が止まらなくなる 

トイレ掃除の最中、気付いたら水を流すために引くレバーの

あたりからポタポタと水が垂れていました。何だろう?と

思っていると、タンクの後ろあたりからも水が!


考えているうちに床に少し水が広がってきたので、そうい

えば上の水が出るフタみたいなところ持ち上げれば取れる

よなあと思って持ち上げてみると、スポッという音と共に

水が止まりました。


床の上が湿ったくらいで済んだのである意味運がよかった。


その後は入居手続きするとき一緒に頼んでいた困りごと

一括受付窓口みたいなところに電話し、水道屋さんに来て

もらいました。その間トイレは使わないようにして

いたけど、徒歩3分のところにコンビニがあって助かった。


水道屋さんに見てもらうと特に異常なし、普通に流した

後に水も止まるので状況不明、しばらく様子見をするしか

ないという話に。


聞いたところによると、上のフタがしっかりはまって

いなくても水漏れするそうなので、地震とか何かの

拍子で少しズレていたのか?という気もしていますが、

今後しばらく気にしておこうと思います。


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



[ 2017/11/19 22:30 ] 日常 | TB(0) | CM(0)