文字コードの判別

やはり自前でやるしかないということで、文字コードと言うものを勉強しながら実装して見た。最初は文字コードを気にせず、Stringにぶち込んで 1byte ずつチェックしてたんだけど、この方法だと SJIS で制御コードに当たる f0~fc が含まれていると、誤動作する。これじゃ駄目だと言うことで、バイト配列で受けて、バイト配列のまま処理すると上手く行った…と思いきや、いくつかファイルを読んで試していると VB が落ちた。何度やっても、数ファイル読みこんだところで落ちる。スタックダンプを見ると kernel32 が怒ってるので、どこかの領域壊しちゃってるのかも。何とか原因を調べて見ますか。

現象を絞る

どうやら、自前の文字コード判別は関係無かったみたいだ。特定のファイル(SJIS)を読みこんで、NKF32でSJISに変換するときのみ落ちる。色々調べていくと、半角仮名が使われているあたりで落ちているっぽい…うー、これはどうしたもんか。渡し方が悪いのかもしれないけど、外部のDLLに引っ張られて落ちてるように見えるしなぁ…

暫定回避

文字コードが SJIS の時は NKF32 で変換しないようにした。うう、後ろ向きだ…