IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

漢字コードの変換(その2)

      2015/02/04

「Unicode」でスクリプトを実行してみたかった。それだけ。変換には少し時間が掛かるようだ。原因はファイルの入出力にあるのか、それとも、変換にあるのか・・・。ともかく、実行はできるようなので少し試してみよう。そんなわけで、今までのサンプルを「Unicode」に変換してみました。

実行してみると、色々不具合がありますね・・・。そもそも、ファイル名を限定しすぎていたから、「…の解説」に戻れなくなった。しかも、出力が標準で「Unicode」になるから、NNではまともに見れないです。

今回は色々と見なおしてみた。じっくり見ていくともっと工夫できそうな事もあって、なかなか迷ってしまう。

ブラウザへの出力「Content-type: text/html」に「charset=ISO-2022-JP」とかを付け加えて書くと、ブラウザはきっちり理解してくれるようだ。試しに出力を「Unicode」にして書いてみると、今までは「日本語(自動選択)」のままだったのがちゃんと「ユニバーサル文字(UTF-8)」で表示された。NN4は相変わらず「□」に化けてるけど・・・。NN3はオプションなのか、グレー表示になっていた。「Unicode」はブラウザへ出力するのはやめたほうがいい。「Unicode」を乱用するのは、文字化けの原因を増やす事になるだけのような気がする。

グローバル変数とローカル変数を区別しやすくするために、グローバルな変数は「$G_」ではじめる事にした。区別するのには、一般的には大文字を使うことが多い(環境変数も大文字だし)みたいだけど。小指が痛くて「Shiftキー」を長い時間押しているのは疲れるし、「CapsLock」もあまり使いたくない。基本的に大文字が好きじゃないという事もあるけど。

少し前に気づいたけど、正規表現で「何回繰り返す」の表現は、その後ろに「{}(中カッコ)」で囲んだ数値をいれると良いようだ。その他にも、無くてもいい(0文字以上)なら後ろに「*」を、1文字以上なら後ろに「+」を表記する。つまり、「ts[0-9][0-9][0-9][0-9]」は「ts[0-9]{4}」と書けるし、桁数にこだわらないなら「ts[0-9]*」一桁以上なら「ts[0-9]+」と書く。なかなか便利だ。

「.(ピリオド)」のエスケープは常にするように心がけた方が良いのかな?「.」は正規表現内では特殊文字なのでエスケープが必要なのに・・・。「"…"」では「」は常にエスケープされるから、「\」以外に「」を表現する方法は無いけど・・・。時々は変数を出力してみて、感覚をつかむ必要がありそうだ。いい例が「"index\.($HTMLEXT)"」だ。読み方には気をつけよう。

「HTML-Lint」で書かれている出力する漢字コードの格納先は、今まで「$cutcode」だと思っていた。でも、実は「$outcode」と書いてあった。確かに・・・。意味もわからずにまねをするのは恥ずかしい事だな・・・と思った。他にも、変数の書き方の規則(とまではいかないけど)を考えて変更したり、ループや関数の書き方をなるべく統一したりした。

・・・

今回、ローカル環境から完全に移行するために「jcode.pl」に変更しました。よって「Unicode(UTF-8)」は使えなくなってます。

というわけで、「euc」で出力してます。・・・このテストの意味がほとんど無くなりました (^^;;;

ソースコード

respo

respo link

ZenBackWidget

 - 情報技術について