«前の日記(2009-05-07) 最新 次の日記(2009-05-10)» 編集

ぱぱネット(仮)


2009-05-09 外はいい天気だが [長年日記]

_ ウツウツウツ・・・とプログラミング

Perlの件ではご迷惑をおかけしました。

  1. Perlが内部コードを持つようになった
  2. 必ずファイルやストリームの入出力には内部コードの変換がかむ
  3. (同じ文字列に見えても)UTF-8フラグがあるものと無いものがある
  4. ソースコードに直接記述する場合はuse utf8(モジュールではなくソースコードに効く宣言のようなもの?)を指定すると、UTF-8フラグがつく
  5. 逆に従来の全てのソースに埋め込まれた文字列にはUTF-8フラグがない(laten-1?)
  6. なので、フラグ付きと無しの文字列を連結したりしてから、出力しようとすると(printf文などほぼ全て)、おかしな変換をして出力する
  7. フラグ付き文字列にutf8::encode($str)とするとフラグが落ちる
  8. 落ちたもの同士を連結したりした場合は「従来どおりの挙動」
  9. ゆえに従来のソースコードを流用する場合はソースコードは全てno utf8ですごすか、フラグ状態を自分で管理しよう
  10. フラグはutf8::is_utf8()で確認できる(use utf8とは何の関係もない)

こういう理解で宜しいんですかね。 脳みそスカスカの俺には辛い・・・

全体的な流れとしては、今まではソースコードさえ何の言語で書いていいかわからなかったなどの、不明確な部分を減らしていきましょう、ということなんだろうな。

_ しかしCGI.pmはやはりおかしい

生Perlで

 <input type="checkbox" name="chk0" value="1" checked>
 アニメ・特撮

とやったものと、CGI.pmで

 $q->checkbox(-name=>"chk0" -checked=>1, -value=>"1", -label=>'アニメ・特撮');

とやったものは 結果が違う のである。CGI.pmの方は以下のように化けるのだ。

文字化け

原因はこういうタココードによるものらしい。 一応qw/:standard -no_xhtml -utf8/などと指定しているがロジックのバグなのでもちろん直らない。UTF-8フラグ周辺が正しくても関係ない。 文字表示に関してはCGI.pmは棄てで!(いや使うけどね)

_ ぐごごごご

ミスで記事消しちまった・・・まあいいや。

_ ニコニコ動画でもみるか

鬼作wwwwwwwwwwww

技術がすごい

本日のツッコミ(全4件) [ツッコミを入れる]
_ こにしか (2009-05-10 01:49)

CGI.pmのHTML作成補助機能を使わずに、すごく重いですがTemplate-Toolkitを使うと幸せになれると思います(たぶん)。ORマッパーと組み合わせると最強です

_ (2009-05-10 20:48)

うーむ世の中進んでいますな・・・

_ もぽ (2009-05-10 23:49)

$q->charset('utf-8')すればいいのに。<br>といいつつこれはこれで別の問題が発生するんだけど(例えばHTML::Template併用した場合とか(苦笑))、まーわかっていれば問題にならないとも言える。(ぉ<br>参考→cyberlib.enterbrainz.com/1178086411.html<br><br><br>#もしかしてさっきNGワード入れてたかもなんでリトライ。<br>#連投になってたらスマソ。

_ (2009-05-11 05:46)

名前が2バイト文字でないか、本文にhttp(1バイト)を含むとはじきますすみません。<br><br>>$q->charset('utf-8')すればいいのに<br>なおった!なおったよママ!!!(誰がママや)<br>しかし参考先を見るとここまでしてCGI.pm使う意味ないなーと思ったり。<br>情報ありがとうございます。


2001|04|
2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|05|10|

[BANNER]
このサーバーをもう12年も維持しているかと思うとめまいがしますよ。
ツッコミ機能は、ハンドル名が完全日本語じゃないと登録できません。
また、本文にURLが含まれていても登録できません。
いずれもSPAM対策です。
[Panda Papanda]
2009年
5月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

[Papanda]  [Kuma]  [Tomorin]  [Iron]  [Eiza]  [Dokkin]  [Honya]  [Zyou]  [Tsuyo]  [Bike]  [KoeBBS]  [Chukei]  [portal]  [tvmatome]  [KaoPaku] 

訪問者数:(+2560143)