プログラミング: 2020年12月アーカイブ

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

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

このアーカイブについて

このページには、2020年12月以降に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のアーカイブはプログラミング: 2020年11月です。

次のアーカイブはプログラミング: 2021年2月です。

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


月別 アーカイブ

電気ウナギ的○○ mobile ver.

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