|
テーマ:今日の出来事(287441)
カテゴリ:プログラム
ごちゃごちゃいじってたらハマったのでメモメモしておきます
今までホームページの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版 / 深沢千尋 【単行本】 お気に入りの記事を「いいね!」で応援しよう
[プログラム] カテゴリの最新記事
こんちは!聖人(笑)だよ
今日は少しだけ インテリっぽく(笑) 書いてみるよ(爆笑) > メモメモしておきます 備忘録ですね. ネット社会において 多く備忘録を公開されています. 聖人(笑)としても, そういった備忘録は, 先人が残した, 「問題発見や問題解決方法, __技術に関する"記録"」として 精査することで"情報"として 活用するので大変助かります. 文字コードに関する小話ですが, 時代の流れでしょうか, 情報インフラの文字コードは UTF8に移行しています. 情報インフラ全般において 高速処理や大容量化が進み 文字コードにおいても "容量と情報量拡大"という 技術動向と見方でしょうか. 逆にEUCやshif-JISで 構築されたシステムは 旧時代のシステムとして "文字コード移行の対象" になります. 文字コード変換については ヒューマンエラーに留意する 必要があります. Mura-Balさんも,ご存知と思いますが nkfコマンドや相当するオープンソース を活用すると"効率/高速/高信頼"で 移行が可能です. これら活用して簡易的スクリプトで "迅速/安価/正確"に対応することは "クライアントから信頼を得る優秀なSE" と言えます. 少し話はそれました まだ文字コードについては移行期間と言え, EUCやs-jisを想定したシステム やインフラは,今も多く存在します. これに係るシステムを "導入する際"に 利用ソフトの規模に問わず 文字コードの齟齬には, 十分な留意する必要があり "検討/実装/検証"が伴います. また,接続される旧環境(EUC,S-jis)に 対する配慮が必要となることも 留意すべきでしょう. SEや情報インフラ管理者には, 悩ましいところです. インテリぽかった(爆笑)? それでは,またニャ~. (2012/03/17 11:10:19 AM)
>滋賀県在住の聖人(笑)さん
>インテリっぽく(笑)書いてみるよ(爆笑) 普段のコメントからインテリっぽいですよ~(笑). >「問題発見や問題解決方法,__技術に関する"記録"」として精査することで"情報"として >活用するので大変助かります. 本当にそう思います! インターネットで情報を探すことが出来るというのは,誰かがわざわざ残してくれている訳ですからねぇ. レトロゲームや特にアーケードゲームなんて実物を見ることも無く消えていくものも多いので,話が聞けるだけでもありがたいなぁと. >まだ文字コードについては移行期間と言え, >EUCやs-jisを想定したシステム >やインフラは,今も多く存在します. 変換する際の事を考えると,どこかに落ち着くと良いのですがね…(´・ω・`) 毎度毎度,ためになる話ありがとうございますー☆ (2012/03/19 10:19:31 PM) |
|