よく「JIS(ISO-2022-JP)」と表現されますが、PHPでは「ISO-2022-JP」と「JIS」は違う文字コードになります。
「ISO-2022-JP」はメールでよく使われる文字コードで規格を厳守してるので機種依存文字(ISO-2022-JP規定外文字)や半角カナ共に扱えません。
一方「JIS」は半角カナが使え、機種依存文字が扱えない。
八方ふさがりのように見えるがPHP5.2.1からは「ISO-2022-JP-MS」が用意されており、コレだと機種依存文字も半角カナも扱える。
「メールはJISだから機種依存文字や半角カナが送信出来ない」はずだが、ISO-2022-JPのふりして中身をISO-2022-JP-MSにすると機種依存文字が送れたりします。(受け手のメールソフトが対応してた場合のみですが・・・)
(さらに…)
2015/05/06 | Tags: PHP, SJIS, UTF-8, 文字コード | 制作日記 | コメントください »
毎回では無いがPHPのようにサーバで生成されるページのデザイン等を修正するのに一旦HTMLとして保存し、静的ページとして保存してスタイルシートやJavaScriptを修正を進めたりする事もある。
今日もログイン後のページの修正でログインが面倒なのでダウンロードしたHTMLをInternetExplorerで確認しながら修正を進めていき一段落が付いたのでFireFoxとChromeで確認してみると「SyntaxError: illegal character」(OperaだとUncaught SyntaxError: Unexpected token ILLEGAL)というエラーが現れスクリプトエラーになって動作しなくなった。
ネットで検索しても解決法は見つからず小一時間ほど悩んでいたが、ふとエディタのウインドウ下のバーに見慣れない文字に気づいた。
「UTF-16LE」
作ったのは「UTF-8」でHTMLの宣言も「UTF-8」にしてるが、Internet Explorerで「ソースの表示」から「ファイル」の「上書き保存」とするとUTF-16LEで保存されるようだ(ちなみにOSはWindows2000から内部文字コードがUTF-16らしいが、少なくともInternetExplorer8までは正常な文字コード(UTF-8)で保存される)。
IE以外は「UTF-16LE」のHTMLから見て「UTF-8」の外部ファイルを「UTF-16LE」と勘違いして読み込もうとして文字化けしてそれが不正な文字(illegal character)としてエラーになっていたようで、エディタにて「UTF-8」に戻したら直った。
ちなみにInternetExplorerでもソースを表示せずに「ファイル」「名前を付けて保存」からだと文字コードを選択可能ですし、標準でソースの文字コードが選択されてるので問題無いです。
2015/02/24 | Tags: IE, 文字コード | 制作日記 | コメントください »