Introduction
こんにちは。阿豆らいち(@AzuLitchi)です。
今回はhtml標準がutf-8に・・・という話について調べてみました。
とうじょうじんぶつ
阿豆らいち:
フリーランスのデザイナー。初めて使ったhtml編集ソフトは「クラリスホームページ」。
ミンスクさん:
らいちの妻。有能。
HTML文書のエンコーディングはUTF-8に決定?
id:momdo さんのこちらの記事の件を調べてみたのでまとめました。
HTML文書は文字エンコーディングUTF-8でなければなりません - 水底の血
文字エンコーディング宣言が存在するかどうかにかかわらず、文書のエンコードに使用される実際の文字エンコーディングはUTF-8でなければならない。
4.2.5.5 文書の文字エンコーディングを指定する - HTML Standard 日本語訳
リンク先のHTML Standard 日本語訳にはもう少し前後の文章もありました。
4.2.5.5 文書の文字エンコーディングを指定する文字エンコーディング宣言は、文書の記憶または伝達に用いられる文字エンコーディングを指定するメカニズムである。
Encoding標準は、UTF-8文字エンコーディングの使用を要求し、それを識別するために"utf-8"エンコーディングラベルの仕様を要求する。これらの要件は、文書の文字エンコーディング宣言が存在する場合、"utf-8"に対してASCII大文字・小文字不区別での一致を使用してエンコーディングラベルを指定する必要がある。文字エンコーディング宣言が存在するかどうかにかかわらず、文書のエンコードに使用される実際の文字エンコーディングはUTF-8でなければならない。
上記の規則を適用するために、オーサリングツールは、新たに作成される文書にUTF-8を使用することをデフォルトに設定しなければならない。
・・・。
エンコーディングラベルとは何?!
こういう時は原文を読んでみます。
https://html.spec.whatwg.org/multipage/semantics.html#charset
4.2.5.5 Specifying the document's character encoding
A character encoding declaration is a mechanism by which the character encoding used to store or transmit a document is specified.
The Encoding standard requires use of the UTF-8 character encoding and requires use of the "utf-8" encoding label to identify it. Those requirements necessitate that the document's character encoding declaration, if it exists, specifies an encoding label using an ASCII case-insensitive match for "utf-8". Regardless of whether a character encoding declaration is present or not, the actual character encoding used to encode the document must be UTF-8.
To enforce the above rules, authoring tools must default to using UTF-8 for newly-created documents.
なるほど…。
エンコーディングラベルとは文字エンコードの名称に対するlabelのことでした。
https://encoding.spec.whatwg.org/#label
Shift_JISなら
- "ms_kanji"
- "shift-jis"
- "shift_jis"
- "sjis"
などのlabelがあるようです。"ms_kanji"って…
UTF-8なら
- "unicode-1-1-utf-8"
- "utf-8"
- "utf8"
があるけど、The Encoding standard ではこのうち"utf-8"のlabelが要求されています。
using an ASCII case-insensitive match(ASCII大文字・小文字不区別での一致を使用)とあるのでlabelは"UTF-8"でもイイよ、という意味に取れます。
この場合の must be って・・・
こういう時ミンスクさんは頼りになります。
この文書を公開してるWHATWGって何?
ただし、上記はWHATWGの要求仕様であって、W3Cの勧告ではありません。
それぞれがどういう組織かは、ひとまずはウィキペディアから引用しておきます。
Web Hypertext Application Technology Working Group - Wikipedia
Web Hypertext Application Technology Working Group(ウェブ・ハイパーテキスト・アプリケーション・テクノロジー・ワーキング・グループ、WHATWG)は、HTMLの開発やその関連技術に興味を持つ人々のコミュニティーである。2004年のW3Cワークショップ後に、W3Cの方針やウェブ制作者のニーズに対する明らかな軽視について不満を持ったアップル、Mozilla、Operaによって設立された。
World Wide Web Consortium - Wikipedia
World Wide Web Consortium(ワールド・ワイド・ウェブ・コンソーシアム)は、World Wide Webで使用される各種技術の標準化を推進する為に設立された標準化団体、非営利団体。略称はW3C(ダブリュースリーシー)。
ティム・バーナーズ=リーが創設し、率いている。このコンソーシアムには企業や団体が会員として加入し、専任スタッフと共にWorld Wide Webの標準策定を行っている。
WHATWGのコミュニティでは、現在のWeb運用についてディスカッションを行い、htmlについての要求仕様が日々アップデートされています。
実際にはWHATWGの意見を取り入れてW3Cがhtml標準の勧告を出している…としておきます。
SHIFT-JISの何がいけなかったの?
下が長い方の「𠮷」はSHIFT-JISでは表示させることが出来なかったので
URLエンコードしたり、ヘタしたら𠮷だけ文字の画像を作ってimgタグで貼りつけたりしてたわけ。
このブログはutf-8だからそのまま「𠮷」と貼り付けられる。そういう文字は他にもたくさんあったんだ。
S-JISのデメリットはそれだけじゃないけど長くなるのでここでは割愛。
じゃあutf-8にすれば文字コード問題は解決?
utf-8といえども全く問題の無い文字コードかというと、そうでもないようで・・・
とりあえず20年web標準に振り回されてきた身としては「全てこれで永久に決定!」って未来が来る気がしません。
あとメールソフトによってはutf-8のhtmlページに
"mailto:hoge@hatenablog.jp?Subject=題名&body=本文"
みたいなメールリンクを埋め込むと文字化けすることがある。
(mailtoがホントにリンクになっちゃうので一部全角にしてあります)
結局、既存のHTML文書を今すぐUTF-8に書き換えないとGoogle八分に合ったりするの?
今すぐどうなるってわけじゃない。
長い目でみたらGoogleもそういうことし始めるかもしれないけど、utf-8以外の文字コードで書かれた有益な情報もたくさんあるので簡単には検索結果に影響を及ぼすことはできないんじゃないかな。
Web制作者はどうしたらいいの?
WHATWGでの要求仕様がutf-8になったってことは事実なので、当面は新規でサイト立ち上げるときはutf-8使うのが正解ってことだろう。オーサリングソフト(Dreamweaverとか)のデフォルト設定をutf-8にしとけってことらしい。
htmlコーディングの際は <meta charset="utf-8"> を上の方に書くべし・・・とWHATWGは推奨してる。
SHIFT-JISでhtml書かれたWebサイトのutf-8化で営業かけるのもアリっちゃアリだけど「Web標準でutf-8に決まったから今すぐ急いで変えないとダメ!絶対!」とか言うと微妙に家の外装工事詐欺っぽいっていうか、煽り過ぎになる可能性もあるから注意。
さらにミンスクさんからの質問が・・・
申し訳ございませんでした…。
今回もツッコミどころ多そうな気が・・・ご指摘あればTwitter(@AzuLitchi)かブコメにお願いします。
おまけ
Illustratorで30秒で歯車描く方法。 pic.twitter.com/u3kXO65b2g
— 阿豆らいち@ヒミツ基地 (@AzuLitchi) 2017年10月9日
QuickTime Playerで画面録画するテストを兼ねて。
それではまた…さよならいち!・∀・)ノ