エンジニアとして正しい処理がクライアントにとっても正しいとは限らない件

パズルが組み合わさらない人たちのイラスト
嫌だけど面倒よりは良い






文字コードが適切に表示されないとかなんとか

拙者「確認いたしましたが、英数字(一部記号)のみ含まれているファイルでして、UTF-8とShift_JISでバイト表現は共通ですので、納品させていただいたファイルで問題ありません。」
クライアント様「文字コードを変換して納品してください。」

「ASCIIをUTF-8にして」それが『できない』ことを理解してもらえなかった話 #ポエム – Qiita



確実に「おまじない」案件

プログラムに使われている文字の影響で、「UTF-8」といえば「UTF-8」だし、「Shift_Jis」だといえば「Shift_Jis」だし、文字コードが何かはエディタが勝手に決めていいファイルをどうするかっていうお話。エンジニアなら「へーそういうことあるのね、まあ確かにあるか」ぐらいで終わるんですけど、これを非エンジニアに説明せよといわれたら相当に面倒くさい。理屈を捏ねたところで、

手元のエディタでは確認出来ませんので、受領できません


ってまあ、なるよね。僕がクライアントでもなるわ。クライアントの要求はファイルの状態がどうであるかだけでなく、それを「私が確認出来る状態にしてください」ということなので。


で、こういうののために古来から存在するのが「おまじない」で、要は「UTF-8」と認識させたいならそう認識させるための文字列を追加しておけばいいわけですよね。「そういう無駄なコメントを追加するのは嫌だ」というコメントも見掛けましたが、それはクライアントの要求を正しく認識できていないからですよ。この場合、クライアントが確認出来ないものは存在していないものであり、クライアントが確認出来るようにするためのものは必要なものです。無駄じゃありません。


というわけで、何でも良いからUTF-8と認識されるコメント(マルチバイトが使いやすい)を追加しておけば良かったよねという話です。



昔の状況はこんな感じでした

そういうのを昔は「おまじない」といってました。


対策1:おまじないの文字を書く
HTML文書の文字化け対策として、HTML文書の最初の方(の前でも可)に、おまじないの文字をコメントとして記述する方法があるという情報をいただきました。シフトJISならシフトJISにしか存在しない文字を、EUCならEUCにしか存在しない文字をファイルの先頭に記述することにより、ブラウザの文字コード自動判別アルゴリズムにヒントを与えてあげようというものです。

シフトJIS文書の場合は、HTML文書の最初の方にひらがなをコメントで記述しておきます。シフトJISの「あ(82A0)」は、JISにもEUCにも存在しないコードなので、文字コード自動認識のヒントになります。

<!– あ(MOJIBAKE TAISAKU) –>

EUCの場合、シフトJISで半角カタカナが使用されていることを考慮されると、EUCにしか存在しない漢字コードは FDA1~FDFE、FEA1~FEFE の領域のみとなります。Yahooなどでは、HTML文書の先頭に以下のような文字コードを挿入しているようです。

<!– (FDFEのコードを持つ漢字) –>

しかし、この領域にはまだ漢字が割り当てられていないので、通常の漢字変換では入力することができません。漢字変換機能の文字コード入力機能を用いるなど、何らかの方法を用いて入力してください。

文字化けしないようにするには – とほほのWWW入門


もっとも最近は文字コードの問題は滅多に起きないのであんまり聞きませんけどね。昔はWebサイトもいろいろと文字コードが違ったもんです。


そう考えると「UTF-8」ってほんとに素晴らしいですね。策定に貢献した人全員にノーベル賞をあげてほしい。