トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-request/36

ページの作成や編集にはユーザ登録が必要です。

UTF-8版が欲しい

  • 投稿者: kgg
  • カテゴリ: 本体機能要望
  • 優先度: 重要
  • 状態: 提案
  • 日時: 2007年03月08日 22時14分43秒

 内容

UTF-8版が欲しい

 コメント

基本的にはスクリプトやテンプレートをすべて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秒)
    1. HTTPヘッダ出力箇所
      • HTTPヘッダ出力の記述を変更する必要があります(wiki.cgi, plugin/rss/RSSMaker.pm, plugin/rss/RSSMaker10.pm, plugin/core/Source.pm の charset)。
    1. CGIモジュールが内部的に扱う文字コード
      • 文字コード変換は、CGI2.pmのparam()の一箇所でEUCに変換しています。ここをutf8としても良いと思います。「use UTF8; をすると、Perlは内部的にUTF-8を標準で扱う」といった文献を読んだことがあります(出典は忘れましたが)ので、無効化しても動くかもしれません。各プラグインで $wiki->get_CGI->param()を使う箇所はここで一極集中変換されています。
    1. 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でも同様の措置がとられています)。
    1. 既存の運用環境から移行するには
      • 最後に、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秒