知ってないとやばいかもしれない。
現象と原因
::beforeとか::afterの疑似要素を使う際、content:;で全角を記載したら文字化けを起こした。
カラーミーの文字コードは「euc-jp」になっている。
<meta http-equiv="content-type" content="text/html; charset=euc-jp" />
cssの先頭にも宣言するように指定がある。
@charset "euc-jp";
で、ローカルでhtmlを組む際はファイル自体に「UTF-8」を指定してある。設定がそうなってるからであって変更すればいいんだけども。
HTML(UTF-8)+CSS(euc-jp)でも、CSSが半角なら問題ない。でも全角は文字化けする。
それを回避できるかという話。
Unicodeで解決
特殊文字では「&」を「&」で書く、みたいな感じで全角文字も別のアプローチができる。
記載 | 表示 |
\9589\3058\308b | 閉じる |
じゃあどれがどれだよっていうのは、一々調べてたらめんどいので変換ツールを使う。
VSCodeであればエンコード・デコードの拡張機能がある。
VSCode: エンコード・デコードしてくれる拡張機能
ツールを入れたくない、入れられない場合はWEBに無料変換サービスがある。
Unicodeエスケープシーケンス変換|コードをホームページに載せる時に便利 | すぐに使える便利なWEBツール | Tech-Unlimited
Unicodeエスケープシーケンスの変換ツール。
変換するときの注意というか
変換したらこうなる場合と
記載 | 表示 |
あいうえお | \u3042\u3044\u3046\u3048\u304a |
こうなる場合がある。
記載 | 表示 |
あいうえお | \3042\3044\3046\3048\304a |
違いは頭の「\u」と「\」で、WEB上で使えるのは「\」の方。
「\u」だったら置換とかで「u」を削除すること。
コメント