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

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 なんか捨てなよ」って簡単に言うやつは単なる「思考停止のふにゃちん技術者」。「捨てなよ」だけではなんの解決にもならない。

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

トラックバック(0)

このブログ記事を参照しているブログ一覧: OpenTextFieldParserって読み込む文字コード指定できないんだ

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5781

コメントする

このブログ記事について

このページは、shinodaが2020年12月15日 19:25に書いたブログ記事です。

ひとつ前のブログ記事は「新規投入したアジングロッドの最初の獲物は・・・」です。

次のブログ記事は「またも、サバ!!」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら