Wiki系とWikiEngineについて語るスレーPart3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
04/03/19 22:25ID:???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
0967964
05/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:???sakura.ad.jpでmod_rewriteが使えないのは知らん。
0969nobodyさん
05/01/21 13:17:46ID:???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エンコードされてるけど?
0972966
05/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
サーバーに日本語ファイル名でHTMLのファイルを置いたときに
サーバーに置いた日本語ファイル名の日本語エンコードと
ブラウザ毎に アドレス欄に日本語を直接入力したときの動作を色々試してみたら?w
ようするに、アドレス欄に日本語を直接入れたときの動作なんてブラウザ依存でしかないし
そのブラウザ依存だって おそらくはアドレス欄に入力された日本語を適当に
(そのブラウザ固有の)エンコーディングで扱ってるだけなんじゃないかな
(よく知らないけど たぶん)URL(URI?)の規格として日本語を直接扱えたり 特定のエンコーディングを想定してたり
そんなことはないと思うし・・ね
で、最初にあげた例を最後に補足
パラメータと違って、ファイル名の場合はサーバー(ApacheやIIS)がファイル名をどう扱うかも
関わってくるとおもうから CGIのパラメータとしてのURLとは例としてふさわしくないところもあるんだけど
ようするに、そこらへんの変換やエンコードは結局ブラウザ依存でしかないんじゃないかって話ね
0974nobodyさん
05/01/21 20:48:38ID:???もちろん ブラウザ固有で適当なエンコーディングとして扱った結果
アクセスする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:???でも、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:???cvsやrcsを使う場合にファイルシステム上にデータファイルを保存する事になるので
SQL等を使ってデータを管理するなら、データのテーブルとして、
ページ名やページデータの他にページ番号をiノードやFAT番号の変わりのように
使うのもありだなぁ・・ と思ったw
0980nobodyさん
05/01/21 23:53:10ID:???0981nobodyさん
05/01/21 23:55:01ID:???0983981
05/01/22 00:34:44ID:???要するに日本語名ページへのリンクを作るとき
「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:???0986972
05/01/22 02:21:02ID:???アドバイスありがとうございました。とても参考になります。
要するに、日本語URLの処理にはブラウザ依存な部分が大きいので
とりあえず一通りの文字コード(SJIS、EUC、ISO-2002-JP、UTF-8)に対応させるぐらいしか
解法がない、と。
ひとまずその方向で実装してみることにします。
# ただ、Rubyを使ってるのでUTF-8への対応がネックに。
>>980
ページ名を半角英数のみにすれば、全てがすっきりすることは確実なんですが
1.別ページへのリンクを張るときに厄介
2.ページ名からページの内容を連想しづらい(特に一覧表示のとき)
という問題が。
0987nobodyさん
05/01/22 02:33:16ID:???「常にUTF-8としてURLを送信する」
というオプションが存在する。
漏れのとこでは このオプションは触っていないが
チェックされた状態になっている。
おそらく、IE6なら デフォルトではこのオプションがチェックされた状態っていう事だろう。
0989986
05/01/22 16:05:12ID:???Ruby/Kakasi あたりを使えば、似たようなことは出来そうなんですが
日本語←→ローマ字の変換精度に疑問があるのと
1:1対応が保証されない問題(hasiは橋? 端?)のために
Wikiの上で使うにはちょっと……。
0990nobodyさん
05/01/22 17:24:16ID:???* ☆_+
: , xヾ:、__,..-‐‐:、、,へ___.ィ/~~~' _ テテテテ・・・
く '´ _/ /  ̄`ヽ}
/0:》@ i(从_从))
= {o:::: ||ヽ|| ゚ -゚ノ|
':,:::::::::::つ:::::::つ
= ヽ、__;;;;::/
し"~(__)
レス数が950を超えています。1000を超えると書き込みができなくなります。