|
テーマ:今日の出来事(288927)
カテゴリ:プログラム
ごちゃごちゃいじってたらハマったのでメモメモしておきます
今までホームページのHTMLファイルを文字コード「Shift-JIS」で記述していたのですが,新しいホームページではHTML5に挑戦してみようということで,これを機に文字コードを「UTF-8」に統一しようというのがそもそものキッカケの話題 というのは,HTML5の仕様を策定しているW3CではUTF-8を推奨しています. と言っても,Shift-JISでも他のEUCなどの文字コードでもサーバとHTMLファイルや設定ファイル内で共通の文字コードを使用していれば,普通にブラウジングして表示する分には問題ないと思いますけどね~(たぶん). で,HTMLファイル自体はどちらでも良いのですが,HTML5で追加されたアプリケーションキャッシュという機能に使われるマニフェストファイル(.manifest)は,UTF-8で保存してね,というのが仕様みたいです. HTML5を色々遊ぶには,あらかじめUTF-8で統一するスタイルの方が今のところは都合が良さそうですね~. ということで,Shift-JISからUTF-8の変換をひたすら行ってみた でで,各ファイルを文字コードUTF-8で保存して動かすと,PHPファイルがエラーを吐いた! しかも,ソースコード内には特に何も記述していない1行目を指しておる… ででで,色々やった結果,ソースコード自体に何を記述してやってもエラーが出るぞ,と. 試しに文字コードを変更するとエラーが出なくなった. ぬーん…?? 調査した結果,UTF-8にはBOM(Byte Order Mark)が付いているUTF-8と付いていないUTF-8があり,全国的にUTF-8と言われるのはBOMなしの方なのに,私はBOMありの方を使っていたのです!! BOMとは,バイト列の順序のことで,対象のデータ列をリトルエンディアン,ビッグエンディアンのどちらで取得すれば良いのかを示すフラグのようなものですが,UTF-8ではバイト単位で処理するため,処理系ではバイトオーダーを考慮する必要はありません. しかし,「このデータはUTF-8で符号化しています」というのを明確にするため,付けているようです 愛用しているテキストエディタの「TeraPad」では,BOMありの方を「UTF-8」,BOMなしの方を「UTF-8N」と表記しており,テキストデータの保存時に選択できるようになっています(アプリケーションごとに表記は異なると思われます). これ,同じように使ってた人多いんじゃないかなぁ?? この両者の方式でそれぞれ保存して,バイナリエディタで開いて比較すると,BOMありのUTF-8の方に"EF BB BF"という文字列が先頭に付与されているのが確認できます. 今まで何も気にせずに普通に「UTF-8」を選んでしまっていたよぉ~ Perlのソースコードで先頭に書くおまじないのシェバンでも上記のBOMありだと不都合が起こりそうですね. という訳で,一般にUTF-8といえばBOMなしのものを指しますが,使用しているアプリケーションによっては保存時の名称が異なるようなので注意が必要ですね!! 使用するテキストエディタによって,BOM付きの符号化方式を選択することが出来る場合は,特に意図がなけばBOMなしのUTF-8を使うと良いかなぁ 【送料無料】 プログラマのための文字コード技術入門 WEB+DB PRESS PLUSシリーズ / 矢野啓介 【単行本】 【送料無料】 文字コード「超」研究 改訂第2版 / 深沢千尋 【単行本】 お気に入りの記事を「いいね!」で応援しよう
[プログラム] カテゴリの最新記事
|
|