文字コードの指定方法

↑
文字コードの指定方法は場所によって微妙に違うので注意する必要がある。なお、文字コードそのものについては、下記を参照のこと。

日本語コード
UTF8とは何か

HTMLのMETA charset

<meta charset="UTF-8">
<meta charset="Shift_JIS">
<meta charset="euc-jp">
<meta charset="iso-2022-jp">

iso-2022-jp(いわゆるJIS)はインターネットの黎明期にはこれを使用しているサイトが時々あったが、現在ではこれを実際に指定しても多くのブラウザがそのページを表示できない。シフトJISかUTF8に変換してページを制作する必要がある。

古い時代には↓のように書いていたが、現在では推奨されない。

<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

Netscape 2.0 の時代には↓のように書いていたが、現在では推奨されない。

<META http-equiv="Content-Type" content="text/html; charset=x-sjis">

.htaccess

.htaccessのAddDefaultCharsetの指定はHTMLのMeta charsetの指定と同じである。

本来は、AddDefaultCharsetが指定されていない場合(offの場合)は HTML上の指定が優先されるのだが、困ったことにブラウザによってはHTML上の指定を全く見ず、AddDefaultCharsetが無いと、日本語を表示できないものがあるので、結局AddDefaultCharsetは必ず指定しなければならない。

Perlのencode/decode

use Encode::Guess qw/shiftjis euc-jp 7bit-jis utf8/;

my $outbuf = encode('cp932', $buf);
my $outbuf = encode('utf8', $buf);

こちらはUTF-8ではなくUTF8である。またShiftJisではなく cp932 と指定する必要がある(でないと、“〜”など幾つかの文字が正しく変換されない)。細かく言うと

UTF-8 or UTF8

"UTF-8"と指定するか"UTF8"と指定するかについては、次の3種類がある。
結局、うまく行かなかったら変えてみるしかない。

もっとも“うまく動いているようにみえる”のに実は“その指定は効いていない”場合もある。AddDefaultCharsetが .htaccess に指定されていると多くのブラウザは HTML上のcharsetの指定を無視するので、その指定が実は誤っていても、間違っていることに気付かない場合もある。

また大抵大文字でも小文字でも動くのだが、大文字でないと動かないもの、小文字でないと動かないものもあるので困ったものである。

(2021.03.31 Lumi)

(C)copyright ffortune.net 2021 produced by ffortune and Lumi.