たまには役に立つ話を。(有効範囲がちょっと狭いけど^^;)
去年夏にauの端末に乗り換えて以来、今まで必ずサーバに取りに行ってきていたHTMLデータが、なぜかキャッシュから表示されるようになってしまいまして。
最近までは再読み込みで何とかなるからいいかーと思っていたのですが、先日広告書き込み対策を一部サイトで実施した都合で、どうしても最新の情報を読んでくる必要がありました。
ということで早速公式ページを確認したところ、複数の方法で制御可能との記述が。(→
技術情報ページ:http://www.au.kddi.com/ezfactory/tec/spec/wap_tag2.html)
早速それを参考に、各ページの<head>~</head>までの間に、
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Cache-Control" content="max-age=0">
と記述、無事に正常に表示されるようになりましたとさ。
掲示板などに書き込む際、半角カタカナを入力したら化けてしまった、ということは良く聞く話。なんでこうなるのか、という原因を説明しているサイトもたくさんあるので、今回はそこもはしょって、実際にどうすればよいのかという話をちょこっとだけ説明します。
Internet上で配布されているBBSスクリプトなどは、汎用性を持たせるためにどんな文字コードでも動作するようになっています。そして内部のデータ形式だけ文字コードを固定すれば、スクリプト自体の文字コードを変換(スクリプトによっては、出力に使用する文字コードを指定できるものもあります)してやるだけで、あとはShift_JISだろうとEUC-JPだろうと動作するためです。もちろんデータファイルの文字コードは固定されていますので、別の文字コードで出力するスクリプトにもそのまま流用できます。
ほとんどのスクリプトにおいて、これを実現するためにjcodeという日本語コード変換ライブラリを利用していますが、このjcodeのconvert関数に渡すとき、入力された文字コードがどれなのかが分からないため、自動判定で渡します。
このとき、入力された文字が半角カタカナのみの文章(あるいは半角・全角が混ざった短い文章)の場合、jcodeは文字コードを正常に識別できなくなり、結果文字化けが発生する、ということです。 これはjcodeの問題ではなく、半角カタカナの文字コードが原因で発生します。
これを回避するには、jcodeに自動判別で渡さなければよい、つまり入力される文字コードも、出力される文字コードも固定すれば良いわけです。(スクリプトによっては出力に使用する文字コードを指定しているのにもかかわらず、jcodeに渡すときに自動判定にしているものもあります)
具体的には、
&jcode'convert(文字列へのポインタ, 'sjis');
と、出力文字コードは指定しているのに入力文字コードを指定していない場合、以下のように入力文字コードも固定してしまいます。
&jcode'convert(文字列へのポインタ, 'sjis', 'sjis');
こうすることで、半角カタカナの文字化けを回避することができるようになります。
ちなみにtackynoteの場合は322行目を(メール送信機能を使用する場合は1307行目、1310行目、1339行目も)、tackynotespの場合は496行目、519行目を(同じくメール送信機能を使用する場合は1953行目、1956行目、1985行目も)、それぞれ変更してあげてください。
※Delphi Q&A掲示板より来られた方へ:MikiはMayuki Sawatariさん製作のプレーヤであり、この記事を書いている僕とは一切関係ありません。
Mayuki Sawatariさん作のMikiというサウンドプレーヤーがあるのですが、これと同じようなものを.NET Framework無しで作ってみたくて、久々にDelphiを弄っています。
正方形でない(要するに普通の四角形のウィンドウではない)ウィンドウを表示するには、以前はRegionというマスク画像のようなものを作ってあげる必要がありました。が、Windows 2000/XPではLayeredWindowというものが使用できるようになりました。LayeredWindowでは、透過したい色を指定するだけで、正方形でないウィンドウを作ることができます。
で、作ってみたサンプルが最初のスクリーンショットです。
結構簡単に出来上がったのですが、文字の縁取りを半透明にするためには、SetLayeredWindowAttributesではなく、UpdateLayeredWindowを使わなければいけないことが分かりがっくり。
ツメが甘いようで…
じくうさんのページでポインタに混乱している様子が書かれていたので
便乗触発されてポインタについて書いてみようとか思ったり思わなかったり。
よく他人に対して説明するとき、「どこそこに書いておいたから見といてー」というような言い方をしたことがありませんか?ポインタとは、まさしくこのような使われ方をします。
例によって大雑把にまとめてみました。
[続きを読む...]
«Prev || 1 || Next»