完全に実写!
さいきんのあにめのぎじゅちゅりょくやばい!
しかし、どうして自分は金髪っ子が大好きなのか。
外国人の金髪女性を見ても別に何とも思わないんだが。
大いなる謎であるw
淑女の皆様、もっと金髪っ子のコスプレしてください。
海夢ちゃんのコスプレお願いします!www
完全に実写!
さいきんのあにめのぎじゅちゅりょくやばい!
しかし、どうして自分は金髪っ子が大好きなのか。
外国人の金髪女性を見ても別に何とも思わないんだが。
大いなる謎であるw
淑女の皆様、もっと金髪っ子のコスプレしてください。
海夢ちゃんのコスプレお願いします!www
まず、
BOM 付き UTF-8 ファイルを作成しない
事が肝要であるが、手遅れになっている状況は多々あるので、
確認および駆逐する方法について具体的に述べる。
確認する方法
$ head -1 <ファイル名> | od -t x1
ファイルの 1 行目を 16 進数でダンプする。先頭が ef bb bf で始まっていれば BOM 付きである。
駆逐する方法
$ sed -i -s -e '1s/^\xef\xbb\xbf//' <ファイル名>
head 、 od および、sed は、どれも GNU Linux システムに標準でインストールされている。
Windows の場合は WSL をインストールすれば使用できる。
なお、BOMがファイルの先頭にあるうちに使用すること。
各方面から寄せられた多数の苦情によって
メモ帳もデフォルトが UTF-8(BOM無し)となり、
BOM の事など多くの皆が忘れてしまったかのようだった。
BOMは撲滅され世界に平和が訪れたかのように思われた。
だがしかし、悪夢は再び訪れる・・・
using Sample1; SampleClass sampleClass = new(); sampleClass.SampleMethod();
using System.Text; namespace Sample1 { internal class SampleClass { public void SampleMethod() { //BOM付き using (StreamWriter sw = new StreamWriter("a.txt", false, Encoding.GetEncoding("UTF-8"))) { sw.WriteLine("マイクロソフトは猛省しなさい。"); } //BOM無し using (StreamWriter sw = new StreamWriter("b.txt", false, new UTF8Encoding(false))) { sw.WriteLine("BOMの無い平和な世界の実現を。"); } } } }
a.txt は BOM を含む。b.txt は BOM を含まない。
前述した a.txt を作成する
ようなコードは書いてはいけない。
(デフォルトでBOM無しの仕様にしとけば良いんだが、そうはなっていない。)
BOM はマイクロソフトが考え出した UTF-8 ファイルの先頭につける符号の事で、
各方面の有識者からマイクロソフトは猛抗議され取り下げた経緯がある。
メモ帳のデフォルトエンコードが UTF-8(BOM無し)になったのもその一環である。
しかし BOM は未だに巷に蔓延り猛威を振るっており看過できない。
BOM は忌避すべき符号である。呪われた符号である。撲滅すべき符号である。
テキストファイルをスクリプト等で加工したりする事があり、
BOM が UTF-8 ファイルの先頭に潜んでいるとは限らない。
かつ BOM はエディタでほぼ表示されないのでたちが悪い。
(カーソルを当てれば表示されはするが非常に分かり辛い。視覚的にはまったく見えない。)
さらに悪いことに、BOM 騒動もすっかり下火となった今、
「BOM が怪しいのでは?」となかなか気づきにくい状況に
なりつつあるということだ。
ファイル中に紛れた BOM の恐ろしさを見てもらいたい。
文と文のちょうど間に BOM が潜んでいる。
Emacs で問題のファイルの部分にカーソル当て、右方向に1つずつ移動してみよう。
カーソルを右に移動すると、「マ」の位置になるはずだが・・・
なぜかカーソルが細くなり「マ」の位置には移動しない。これが BOM の正体である。
もう一度カーソルを右へ移動すると「マ」の位置になる。
BOMの部分でカーソルが細くなっているのが、
おわかりいただけただろうか?
こんなもんわかるかーい!
(ノ`Д´)ノ彡┻━┻
これが JSON ファイルで BOM が潜んでいたりすると、Internal Server Error 地獄となる。
何時間もの作業時間が無駄になるのは確実。
こんなの見つけるのは至難の業である。
マイクロソフトに告ぐ。
BOM を導入した事に関して猛省しなさい。
BOM を撲滅する責務を全うしなさい。
こんな符号を導入したせいで、世界中で多くの技術者が
「謎のエラー」に遭遇しハゲそうになっているのである。
由々しき事態である!
まだ BOM は撲滅されてはいない。忌まわしき BOM の存在を忘れてはならない。
BOM が完全に世界から駆逐されるその日まで、われわれの戦いは終わらない。
つづく
KBいくつだか忘れたけど、つい最近配布されたパッチをインストールすると、
エクスプローラのタブ化機能が有効化された。