電気ウナギ的○○

About Home

OpenTextFieldParserって読み込む文字コード指定できないんだ

shinoda (2020年12月15日 19:25)
VB.NET なんだから Shift_JIS については頑張れ・・・という話。

(他人の)プログラムのテストをしているのだが、固定長のデータ(Shift_JIS の日本語混じり)の処理でちょっとはまった。

Using tfp = fs.OpenTextFieldParser(path)

で読み込んだテキストファイルのレコード(1行)毎に、

Dim ByteArray As Byte() = Encoding.GetEncoding("Shift_JIS").GetBytes(Str)

みたいにバイト単位に分解して、バイト数を指定してデータを抜き出すんだけど、なんか、範囲外へのアクセスが行われた関係の例外が発生する。

調べると、227バイトのはずのレコードが 225バイトになっている。うまくエンコードできてないんやなあ・・・

こりゃ、読み込んだ時点で Shift_JIS だと判断されてないで・・・と思い、OpenTextFieldParser で文字コードを指定しようと思ったんだけどできんのやね。それならバイナリモードみたいなん、ないの?と思ったけどよくわからん。

結局、

File.ReadAllLines(path, Encoding.GetEncoding("shift_jis"))

で読み込めば問題なく処理された。

やれやれ。Microsoft なんだから、しっかり Shift_JIS は処理せえよ(笑)

ちなみに、こういう話になると、自称 UNIX 技術者が「Shift_JIS なんか捨てなよ」で話を終わらせようとする場面をよく見る。
思考停止も甚だしい。この世には Shift_JIS のファイルも、Excel 方眼紙も、まだまだ存在しているんだ。「Excel なんか捨てなよ」って簡単に言うやつは単なる「思考停止のふにゃちん技術者」。「捨てなよ」だけではなんの解決にもならない。

「もう、こういうのはやめましょうね」は良い。しかし、過去のデータは簡単には捨てられない。そこで「捨てちゃいなよ」しか言わないやつは糞の役にも立たないので黙っとけってことなのだ(笑)。お前だ、お前。まず、「捨てちゃいなよ」「やめちゃいなよ」の前に現状の解決策を示せ。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5781

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE