ページの作成や編集にはユーザ登録が必要です。
UTF-8版が欲しい
- 投稿者: kgg
- カテゴリ: 本体機能要望
- 優先度: 重要
- 状態: 提案
- 日時: 2007年03月08日 22時14分43秒
内容
UTF-8版が欲しい
コメント
- 欲しい欲しい!BBS-サポート掲示板/681に、
基本的にはスクリプトやテンプレートをすべてUTF-8に変換してwiki.cgiの先頭でuse utf8;すればOKだと思います。
とのたけぞうさんのコメントがあるのですが、本当にそうなのでしょうか?いろんなところで文字コード変換がなされているような気がしていて(特にプラグイン内で、とか)まだ試してません。ググってみると、髭。さんのページがヒットしたりして、チャレンジしている人はいるようなのですが。 - 名無しさん (2007年09月30日 16時26分36秒)
- ここでは、HTML4.01 の仕様のままでUTF8化することについて言及します。修正の為のポイントは、大きく、次の作業になります。ディストリ(Ver3.6.3dev2)の内容についてのみ確認しました。 - A_M (2007年11月16日 21時53分16秒)
- HTTPヘッダ出力箇所
- HTTPヘッダ出力の記述を変更する必要があります(wiki.cgi, plugin/rss/RSSMaker.pm, plugin/rss/RSSMaker10.pm, plugin/core/Source.pm の charset)。
- HTTPヘッダ出力箇所
- CGIモジュールが内部的に扱う文字コード
- 文字コード変換は、CGI2.pmのparam()の一箇所でEUCに変換しています。ここをutf8としても良いと思います。「use UTF8; をすると、Perlは内部的にUTF-8を標準で扱う」といった文献を読んだことがあります(出典は忘れましたが)ので、無効化しても動くかもしれません。各プラグインで $wiki->get_CGI->param()を使う箇所はここで一極集中変換されています。
- PDFプラグインのUTF8対応化
- plugin/pdf/PDFParser.pm のインスタンス生成部分で、エンコードの種別、仕様フォントをUnicodeに変更する。具体的には、use PDFJ 'UTF8'; / my $encoding "UniJIS-UCS2-HW-H"; の2箇所です。
- ディストリのPDFJ.pmを最新版に置き換え、若干の修正を施します―(PDFJ.pm v0.9 5353行付近)。これは、添付プラグインによる保存時に拡張子がURLエンコードされるため、PDFJ.pmの厳密な拡張子チェックに引っかかるためです(ディストリに同梱のv 0.7でも同様の措置がとられています)。
- 既存の運用環境から移行するには
- 最後に、URLエンコードされて保存されている全ファイルを、スクリプトを書くなどして、EUCコードで保存されたファイル名を一度URLデコードし、ファイル名をUTF8化した上でURLエンコードしリネームすると、既存の運営環境でも移行出来ると思います(新規に設置する場合は不要)。
- 国際化対応、XHTML化対応となると他にもたくさんの修正が伴いますが、新規にFSWikiを設置し、従来通り日本語のみでも良いなら、上記1〜3を実施することでUTF8の運用が出来ます。また、4の「運用環境から移行する」為のスクリプトはCVSのFSWiki4.0系にあるコンバート用のスクリプトが参考になりますが、全てのデータを網羅しているわけでもありませんのでご注意下さい(標準のデータでは、./data、./attach、./backupディレクトリ、投稿プラグインでは、./imageディレクトリ(KGさん作のimageプラグイン)がURLエンコードしたファイル名で保存する仕様です)。 - A_M (2007年11月16日 22時21分13秒)
- 3.6系で完全なUTF8運用するには改変箇所が多いため現実的ではありませんが、ロングファイル名対策のリミッタが働くようにすると、他の方にも編集権限を与える際、安心して利用できると思います。次のようにリミッタをかけると良いと思います。 - A_M (2008年08月13日 13時36分43秒)
setup.dat
filename_length_wikipaeg=90 filename_length_attach=150
plugin/core/EditPage.pm
-&Jcode::convert(\$pagename,'euc'); +&Jcode::convert(\$pagename,'utf8'); +if( length(Util::url_encode($pagename)) > $wiki->config('filename_length_wikipage'){ + return "<h2>ページ名の再入力</h2>". + "<p>半角英数字を基本としたページ名を指示して下さい。</p>". + "<p>UTF-8で運用する場合、日本語でのページ名には制限が生じます。</p>". + "<form action=\"".$wiki->create_url()."\" method=\"post\">". + "<p>ページ名</p>". + "<p><input type=\"text\" name=\"page\" value=\"".$pagename."\" size=\"60\"></p>". + "<p>". + " <input type=\"submit\" value=\" 作成 \">". + " <input type=\"hidden\" name=\"action\" value=\"EDIT\">". + "</p>". + "</form>". + "<p>".$wiki->error("指定されたページ名".$pagename). "</p>"; + +} #-------------------------------------------------------------------------- # 保存処理
plugin/attach/AttachHandler.pm
#------------------------------------------------------- # アップロード実行 (中略) - &Jcode::convert(\$filename,'euc'); + &Jcode::convert(\$filename,'utf8'); if($filename eq ""){ return $wiki->error("ファイルが指定されていません。"); } + if(length(&Util::url_encode($filename)) > $wiki->config('filename_length_attach')){ + return $wiki->error("保存できません。ファイル名を短くしてください。"); + } my $hundle = $cgi->upload("file"); unless($hundle){ return $wiki->error("ファイルが読み込めませんでした。"); }
- ファイル名の決定時に &Jcode::convert() していますが、文字コードを euc でなく、utf8とすることで、JavaScript等との連携が容易になります。 - A_M (2008年08月13日 13時55分13秒)
- 最新版、wiki3_6_3_1でUTF-8に取り組んでるんですが、plugin/core/Sorce.pmとlib/CGI2.pmのif(Util::handyphone()){}の携帯電話箇所の&Jcode::convert(\$value,"...");箇所が、前者はeucで後者はsjisなのは統一した方がよいのでしょうか? (2010年01月07日 15時08分13秒)
- (前者が sjis, 後者が euc ではないでしょうか?) 統一してはダメでしょう。前者は内部コード(標準では euc)から携帯用出力文字コード sjis への変換、後者は携帯時入力文字コード sjis から内部コード(標準では euc)への変換です。 - 菜梨 (2010年01月09日 00時42分20秒)
- そうでしたか。ありがとございます - た (2010年01月09日 17時43分05秒)
最終更新時間:2010年01月09日 17時43分05秒