2019-03-28に投稿

ブラウザ(chrome)のデフォルトエンコードってUTF-8じゃないの?

まー、困ることはないんだけど、気になって気になって

発端

よく、jsとかの挙動で「あれ、どうだっけ?」ってなった時、

<html>
    <head>
    </head>
    <body>
        <button onclick="test()">
            test
        </button>
        <script src="index.js">
    </body>
</html>

とかで、

docker run -d -p 8888:80 -v `pwd`:/usr/local/apache2/htdocs httpd 

で、さくっと試したりする。(果たしてこれがさくっとなのか)
まー、見てわかる通り、htmlはあまりにも手抜きすぎるんだけど。
動くし、すぐ使い終わるから。

んで、ある時、

<html>
    <head>
    </head>
    <body>
        <button onclick="test()">
            てすと
        </button>
        <script src="index.js">
    </body>
</html>

ってやったら、見事に文字化けした。
(macのchrome)

対処はわかる。わかるんだけど…

対処としては簡単で、

<html>
    <head>
        <meta charset="utf-8"></meta>
    </head>
    <body>
        <button onclick="test()">
            てすと
        </button>
        <script src="index.js">
    </body>
</html>

metaタグでcharset指定するだけなんだけど。

ファイル自体はUTF-8で作成していたし、UTF-8なら大丈夫だろ、とか思ってたからちょっとびっくりした。
デフォルトでUTF-8じゃないのか。
気になったので調べようと思った。

調べた

わかんなかった

「指定しないと文字化けする可能性があるので、ちゃんと指定しましょう」
そんなことはわかってるんだ。
わかった上で、指定しなかったらどうなるか知りたいんだ。
指定しなかったら文字化けする? 違う、そうじゃない。いや、そうなんだけど、そうじゃない。知りたいのはそこじゃない。どのエンコーディングが採用されるのか、だ。

apacheにAddDefaultCharsetとかなかったし、ブラウザ側だと思うんだけどなー。

それっぽいこと書いてあるサイトもあったが、ちょっと古い。
chrome ver.35って。俺のchrome、ver.73だぞ。そんな項目ねーよ。
というか、chromeはもうエンコード指定できない
まー、大半のユーザーは「エンコードとは何ぞ」って感じだから、意識させないってのは、わからなくもない。charset指定しないサイトなんて今時ないだろうし。でも、だからこそ、なおのこと指定しなかった場合の挙動がよくわからん。

普段、ちゃんと作る時は、まず間違いなく指定するmetaタグだし、わからなくても困らないっちゃ困らないし、不毛なので調べるのをやめた。

結論

  • エンコードはちゃんと指定しよう
  • どなたか、ご存知でしたら優しく教えてください。

hammhiko

恥を晒して生きていきます。

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント