トップページphp
990コメント314KB

Wiki系とWikiEngineについて語るスレーPart3

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん04/03/19 22:25ID:???
Part2 http://pc2.2ch.net/test/read.cgi/php/1060739206/
Part1 http://pc2.2ch.net/test/read.cgi/php/1014252667/

【関連】
Wiki Wiki 楽々 Run! Run! Run!
http://pc2.2ch.net/test/read.cgi/tech/1010317366/
日本発の wiki クローンリスト
http://www1.neweb.ne.jp/wa/yamdas/column/technique/clonelist.html
日本発の wiki クローンリスト2
http://www1.neweb.ne.jp/wa/yamdas/column/technique/clonelist2.html
096796405/01/21 12:50:50ID:???
素早い回答ありがとうございます。

>>965
ファイル名には連番を使っているのですが、URLに連番を使うと
番号とページ名の 1:1 対応が保証されない(同じURLでも違ったページに飛ばされる可能性がある)という問題が。
はてなダイアリーのような日記システムなら、日付で判断できるんですが……

>>966
一番の目的は、「日本語名を含むURLを扱うこと」です。

しかし?の後に日本語名を付けると、強制的にエスケープされてしまいますよね。
たとえば「http://www.xxx.jp/wiki.cgi?テスト」のように入力しても
http://www.xxx.jp/wiki.cgi?%14%58%32%57%10%20」と置き換えられてしまう。

その点、/の後にページ名を付ければ、Wikipedia よろしく
日本語名そのままのURLが使えて良いんじゃないかな、と。
(ただしそれだと、各種特殊記号もエスケープされないまま渡される?)
0968nobodyさん05/01/21 13:00:19ID:???
wiki.cgi?形式にしておいて、mod_rewriteで後者の形式も使えるようにしとけ。

sakura.ad.jpでmod_rewriteが使えないのは知らん。
0969nobodyさん05/01/21 13:17:46ID:???
URLに日本語を入れると、強制的にエスケープされると思うよ。
wikipediaはUTF-8エンコードには対応してるから、IEとかOperaからは直接入力で見にいけるけど、
win版Mozillaはeucかなにかでエンコードするから、ページ名が化けて見にいけない。
0970nobodyさん05/01/21 14:00:32ID:???
まったく新たに作るのであれば書き方法は?
[[テスト@test]]
と書くと、
wiki.cgi?page=test
でリンクが張られ、アクセスできるようにする、という方法。
@ の部分は > でも :: でも何でもいいです。
0971nobodyさん05/01/21 14:05:58ID:???
ファイル名に連番って実装は あんまり想像できないんだけど
ハッシュドWikiやwemaのような ページの中の細かい単位のものを
個別にファイルに収めるとか 声のかけらのようなものを実装するなら
番号という選択肢も頭に浮かぶんだけど・・
まぁ、それはそれ・・w

連番使うとページ名と1:1保証されないってのもよくわからないけど・・
一度ページを削除してから新たに別のページを作ったとき 空き番号でファイルを作成
したりすると、誰かがリンクした古いページのURLで違うページにとかって話なのかな。
私個人的には 連番を使うなら、新規ページは現存最大番号+αで作るとか
ハッシュで同一(番号)ファイル名を作らないようなアルゴリズムを考えるとか
まぁ・・ それもいいやw

入力しても強制的にエスケープ?
ブラウザのURL入力欄に直接入力するときの話?
ウィキペディアも日本語名のページはURLエンコードされてるけど?
097296605/01/21 14:53:54ID:???
アドバイス&突っ込みありがとうございます。

>>968
できるだけ幅広いサーバで、単純に動くようにしたいので
サーバ依存の mod_rewrite はできるだけ避けたい方法です。すいません。

>>969
なるほど、ブラウザ依存な部分もあったんですね。
しかしそうすると、日本語URLの使用はますます危うい……

>>970
いくつかの文法パーサを組み込めるようにする予定なので
使う文法によっても変わってくるかもしれませんが……
標準では [[テスト|test]] 、あるいはMarkdown風に [[テスト]](test) と。この二つ。

>>971
> 実装
現時点では、「新規ページは現存最大番号+αで作る」実装になっています。
新しいページを作ると、そのページの本文を「rw_0001.wiki」というファイルに書き込み。
ページ名と連番の対応は別のデータファイルで記録。

> ウィキペディアも日本語名のページはURLエンコードされてる
Operaではエンコードされず、完全に日本語ままで扱えるようです。
0973nobodyさん05/01/21 20:29:12ID:???
いや、だからさ・・w
じゃぁさ アドレス欄に日本語を入れたときって その日本語コードは何として扱われるわけ?w

サーバーに日本語ファイル名でHTMLのファイルを置いたときに
サーバーに置いた日本語ファイル名の日本語エンコードと
ブラウザ毎に アドレス欄に日本語を直接入力したときの動作を色々試してみたら?w

ようするに、アドレス欄に日本語を直接入れたときの動作なんてブラウザ依存でしかないし
そのブラウザ依存だって おそらくはアドレス欄に入力された日本語を適当に
(そのブラウザ固有の)エンコーディングで扱ってるだけなんじゃないかな

(よく知らないけど たぶん)URL(URI?)の規格として日本語を直接扱えたり 特定のエンコーディングを想定してたり
そんなことはないと思うし・・ね


で、最初にあげた例を最後に補足
パラメータと違って、ファイル名の場合はサーバー(ApacheやIIS)がファイル名をどう扱うかも
関わってくるとおもうから CGIのパラメータとしてのURLとは例としてふさわしくないところもあるんだけど
ようするに、そこらへんの変換やエンコードは結局ブラウザ依存でしかないんじゃないかって話ね

0974nobodyさん05/01/21 20:48:38ID:???
>>973の補足
もちろん ブラウザ固有で適当なエンコーディングとして扱った結果
アクセスするURLは そのエンコーディングで扱った日本語データを URLエンコードした
結果のURLにアクセスするんだろうし
アドレス欄の表記を日本語のままにしているのか URLエンコードして表示しなおすのかってのも
ブラウザ依存の話なんじゃないかと思う
0975nobodyさん05/01/21 21:07:11ID:???
上の少しだけ突っ込んだ話だけど、

href="http://日本語" や アドレス欄に直接日本語を入力したときは
ブラウザが勝手に URL エンコードする。

そのとき、IE なら元のページの文字コードが何であろうとエンコード文字列は Unicode に、
Mozilla 系ならエンコード文字列は元のページの文字コードだか何か(確認してない、スマソ)になる。

Wikipedia の文字コードは Unicode なので IE ならそのまま日本語アドレスでも大丈夫だが、
Mozilla 系だと文字化けする事態になる。

つまりパラメータを受け取ったときにページ名の文字コードを判別すれば、
日本語 URL でも何とかなるんじゃないかと思うんだけど、実際できるかはわからないな。
0976nobodyさん05/01/21 21:13:35ID:???
Opera は UTF-8 でエンコードされた URL をデコードしてアドレス欄に表示しているってだけだよね。
でも、Shift-JIS、EUC-JP、ISO-2022-JP、UTF-8 のどれでエンコードされようが、きちんと認識してくれる
Wiki を見たことあるから、そういう実装をすれば良いと思う。
0977nobodyさん05/01/21 23:08:29ID:???
どれでエンコードされようがっていうのは
つまり、そのWikiでは ユニコード対応のnkfで ページ名を
対応するインターウィキ名のエンコードでエンコードしているという事じゃないのかな
インターウィキの話じゃないのかな・・

リンク(URL)内に記述された日本語を 何らかのエンコードになおすという話だとしたら
URLエンコードするときの日本語エンコーディングに何を選択するのかの情報を
いったいどこから入手するのだろう・・

リンク先のページの文字エンコーディングを判別?
Wiki等の パラメータとして日本語を受け取るCGIの場合なら
URLのエンコードとページのエンコードは おそらく 一致しているからそれでいいのかもしれない
だけど、実際のファイルのファイル名が日本語ファイル名で
その日本語ファイル名のエンコードと
そのファイルの中身のエンコード HTTP-EQUIVの charsetが一致する保証もないわけだし・・

0978nobodyさん05/01/21 23:14:15ID:???
あ・・
Wiki側で URLで渡されたページ名を
いったんURLデコードした後に
自分自身が扱うエンコーディングにnkfで変換するって話なのかな
0979nobodyさん05/01/21 23:33:25ID:???
ファイル名、あるいはURL内のページ名に番号という選択肢は私的には避けたい選択肢のひとつなんだけど
cvsやrcsを使う場合にファイルシステム上にデータファイルを保存する事になるので
SQL等を使ってデータを管理するなら、データのテーブルとして、
ページ名やページデータの他にページ番号をiノードやFAT番号の変わりのように
使うのもありだなぁ・・ と思ったw
0980nobodyさん05/01/21 23:53:10ID:???
まず半角を使え。
0981nobodyさん05/01/21 23:55:01ID:???
ぼくのWIKIも開発していいですか?
0982nobodyさん05/01/21 23:55:42ID:???
>>981
どうぞ。
できたら晒してください。
098398105/01/22 00:34:44ID:???
さっそくですが、色々なところでさんざん言われているURL問題について悩んでます。

要するに日本語名ページへのリンクを作るとき
http://www.xxx.jp/wiki.cgi?%14%58%32%57%10%20」のようなURLにするべきか
それとも Wikipedia のように「http://www.xxx.jp/wiki.cgi/テスト」みたいなURLにするべきか。

個人的には後者の方式を採用したいところなんですが
文字コードの問題とか、ページ名に特殊記号(&、?、/)が使えないのではないか、とか
そういった諸々のことが心配になります。
どちらの方式にするのが正解なのでしょうか?
0984nobodyさん05/01/22 00:41:05ID:???
以下ループ
0985nobodyさん05/01/22 00:44:15ID:???
で、新スレは?
098697205/01/22 02:21:02ID:???
>>973-976
アドバイスありがとうございました。とても参考になります。
要するに、日本語URLの処理にはブラウザ依存な部分が大きいので
とりあえず一通りの文字コード(SJIS、EUC、ISO-2002-JP、UTF-8)に対応させるぐらいしか
解法がない、と。

ひとまずその方向で実装してみることにします。
# ただ、Rubyを使ってるのでUTF-8への対応がネックに。

>>980
ページ名を半角英数のみにすれば、全てがすっきりすることは確実なんですが
1.別ページへのリンクを張るときに厄介
2.ページ名からページの内容を連想しづらい(特に一覧表示のとき)
という問題が。
0987nobodyさん05/01/22 02:33:16ID:???
ちなみにIEではインターネットオプションの詳細設定で
「常にUTF-8としてURLを送信する」
というオプションが存在する。
漏れのとこでは このオプションは触っていないが
チェックされた状態になっている。

おそらく、IE6なら デフォルトではこのオプションがチェックされた状態っていう事だろう。

0988nobodyさん05/01/22 13:53:08ID:???
>>986
migemoの応用でなんとかならんかな?

とてきとーに言ってみた
098998605/01/22 16:05:12ID:???
>>988
Ruby/Kakasi あたりを使えば、似たようなことは出来そうなんですが
日本語←→ローマ字の変換精度に疑問があるのと
1:1対応が保証されない問題(hasiは橋? 端?)のために
Wikiの上で使うにはちょっと……。
0990nobodyさん05/01/22 17:24:16ID:???
+ ;
* ☆_+
: , xヾ:、__,..-‐‐:、、,へ___.ィ/~~~' _    テテテテ・・・
         く '´ _/ /  ̄`ヽ}
          /0:》@ i(从_从))
       =  {o:::: ||ヽ|| ゚ -゚ノ|
         ':,:::::::::::つ:::::::つ
      =   ヽ、__;;;;::/
           し"~(__)
レス数が950を超えています。1000を超えると書き込みができなくなります。