2013-10-21

data URLの標準エンコードはASCII

なんか数ヶ月に一回ぐらい遭遇してそのたびに「あれっ」て思って検索して「ああそうだった」みたいな気分になるのでメモっとく。

data:text/plain,あいうえお などとすると文字化けする。これはバグでもなんでもない。charsetのデフォルトがASCIIだから。

RFC 2397 section2を読むと、メディアタイプを指定しなかった場合のデフォルトは text/plain;charset=ASCII であり、 "text/plain" だけのように charset の指定を省略できる、とあるので、charsetのデフォルトはASCIIである、と読むのが自然だと思われる。

ChromeのOmniboxでの入力はUTF-8のようなので、上の例であれば、 data:text/plain;charset=UTF8,あいうえお などとすればOK。

ちなみになんで data URL を(Base64などを通さずそんな風に)使っているかというと、ちょっとしたことを書きつける際、ブラウザで新しいタブを開いて data:text/html,<textarea> などとしてテキストエリアを開いたり、ほんとにちょっとしたHTMLの断片を表示・確認するのに使っているから、なのでした。けっこう便利よこれ。おすすめ。