現在プロジェクトへのredMineの導入を検討していて、試用中なのですが、
Wikiのタイトルに日本語を含む場合、削除ができません。
皆さんの環境ではいかがでしょうか?
どうもPOSTの場合だけURLが二重にエンコードされているのではないかと思うのですが、
解決方法をご存知の方はいらっしゃいませんか?
どうやらマルチバイト文字列を切り出すところでアウトだったみたいです。
こちらでは編集も出来なかったのですがそちらでは出来たのでしょうか ?
毎度、付け焼刃的なパッチですが以下に対応書いておきます。
Index: app/models/wiki.rb
===================================================================
--- app/models/wiki.rb (リビジョン 700)
+++ app/models/wiki.rb (作業コピー)
@@ -40,7 +40,7 @@
# replace spaces with _ and remove unwanted caracters
title = title.gsub(/\s+/, '_').delete(',./?;|:') if title
# upcase the first letter
- title = (title.length > 1 ? title.first.upcase + title[1..-1] :
title.upcase) if title
+ title = (title.length > 1 ? title.split(//).first.upcase +
title.split(//)[1..-1].join : title.upcase) if title
title
end
end
$KCODEに依存する気もするので確実じゃないと思いますが 。
私の環境では$KCODEはutf8でした。
パッチありがとう御座います。
使わせていただきます。
> こちらでは編集も出来なかったのですがそちらでは出来たのでしょうか ?
編集は可能でした。$KCODEはutf8です。
GETでリクエストされているアクションは正常に動作していました。
HTTPヘッダーを見ると同じアドレスをあらわすはずが、POSTの場合だけ異様に長くなっていました。
その為、POSTでリクエストする際に既にURLEncodeされているアドレスを再度URLEncodeしている
のではないかと考えていたのですが、違いましたか。
RubyもRailsも経験がないので、かなり無理やりな方法で、一応解決したのですが、
こちらの方法に変えさせていただきます。
ご提示いただいたパッチを適用してみましたが、
状況は変わりませんでした。
fmktさんの環境とは原因が違うみたいです。
私の環境は
WindowsXP
Ruby1.8.6
Rails1.2.3
redMine0.5.1
です。
私はurl_helper.rbのlink_toの中でURLをDecodeしてしまうという
かなり強引なやり方で回避しました。
ただし、この方法だと国際化ドメイン対応のブラウザ以外はダメだろうし、
色々なところに影響が出そうなのであまり良くないと思っています。
他にもっと良い回避策がありましたらアドバイスお願いいたします。
参考までに使用している 日本語のタイトル を教えていただけますか?
あと、使用しているDataBaseもできれば教えて欲しいです。
こちらで試したWikiのタイトルは「らいぶらり」「日本語」を使用しましたが
両方とも編集・削除できました。
先のパッチですがもしかするとrev700(か0.5.1以降)だけの現象かもしれません。
0.5.1で試したら何もしなくても日本語のタイトルでもちゃんと編集できました。
同様に、削除も正常に行われました。
では。
> 参考までに使用している 日本語のタイトル を教えていただけますか?
> あと、使用しているDataBaseもできれば教えて欲しいです。
私の環境ではマルチバイト文字が含まれるとすべてダメです。
あいうえお
てすと
テスト
等色々試しましたが全てダメでした。
DatabaseはMySQL 5.0.45です。
エンコーディングはutf8です。
エンコーディングをsjisなどに変更しても同じでした。
> 先のパッチですがもしかするとrev700(か0.5.1以降)だけの現象かもしれません。
> 0.5.1で試したら何もしなくても日本語のタイトルでもちゃんと編集できました。
> 同様に、削除も正常に行われました。
そうですか。出来ますか。。
参考までにfmktさんの環境も教えていただけませんか。
宜しくお願い致します。
> 参考までにfmktさんの環境も教えていただけませんか。
OS:CentOS5.0
ruby:1.8.6 (2007-03-13 patchlevel 0)
rails:Rails 1.2.3
MySQL:5.0.41-community
です。
うーん、OSの違いのせい ?
サーバはどのようにして動作させていますか?
もし、
>ruby script/server -e production ....
と、動作させているなら同じパスで
>ruby script/console production
を、実行してみてください。
その後、コンソール状態になるので
Wiki.find(:all).map(&:start_page)
と、打ってみてその実行結果を教えていただけますか?
ちなみに結果に流せないような情報があるなら、
はしょっていただいてもかまいません。
> あいうえお
> てすと
> テスト
の文字列が出ればいいのですが
では。
On 9月5日, 午前11:47, yhPaPa <masahiko0...@yahoo.co.jp> wrote:
> こんにちは。
>
> > 参考までに使用している 日本語のタイトル を教えていただけますか?
> > あと、使用しているDataBaseもできれば教えて欲しいです。
>
> 私の環境ではマルチバイト文字が含まれるとすべてダメです。
> あいうえお
> てすと
> テスト
> 等色々試しましたが全てダメでした。
>
> DatabaseはMySQL 5.0.45です。
> エンコーディングはutf8です。
> エンコーディングをsjisなどに変更しても同じでした。
>
> > 先のパッチですがもしかするとrev700(か0.5.1以降)だけの現象かもしれません。
> > 0.5.1で試したら何もしなくても日本語のタイトルでもちゃんと編集できました。
> > 同様に、削除も正常に行われました。
>
> そうですか。出来ますか。。
>
> 宜しくお願い致します。
> その後、コンソール状態になるので
> Wiki.find(:all).map(&:start_page)
> と、打ってみてその実行結果を教えていただけますか?
実行してみました。
以下実行結果です。
>> Wiki.find(:all).map(&:start_page)
=> ["繝・せ繝・]
Wikiのメインページには"テスト"を設定しました。
アドバイスを参考に以下も実行してみました。
>> WikiPage.find(:all).map(&:title)
=> ["Top", "RedMine", "RedMine縺ョ繧ォ繧ケ繧ソ繝槭う繧コ", "RedMine縺ョ蛻ゥ
逕ィ繧ャ繧、繝・, "繝・せ繝・, "縺ゅ>縺・∴縺・]
これはDBに文字化けして格納されているということですよね?
MySQLのQuery Browserで確認したときも文字化けしていたのですが、
そういうものなのかな?と思っていました。
キャラセットの設定がおかしいのでしょうか?
Windows環境と言うことを忘れていました。
コンソール上で文字化けするのは当然ですね。
issue(問題)等は日本語で追加しても大丈夫なのでしょうか?
当方もWindowsに入れてみて試してみました。
が、やはり削除は出来ています 。
WindowsXP
MySQLは最新5.0.45 だったかな
Rails 1.2.3
ruby 1.8.5
httpserver webrick
Wikiページ名 「てすと」 を POSTした時のログは以下のようなものでした。
127.0.0.1 - - [05/Sep/2007:15:52:54 東京 (標準時)] "POST /wiki/
1/%E3%81%A6%E3%81
%99%E3%81%A8/destroy HTTP/1.1" 302 113
http://localhost:3000/wiki/1/%E3%81%A6%E3%81%99%E3%81%A8 -> /wiki/
1/%E3%81%A6%E3
%81%99%E3%81%A8/destroy
他に同じような症状の方はいないのかな
> 当方もWindowsに入れてみて試してみました。
同じ環境まで作って頂いてありがとうございます。
> issue(問題)等は日本語で追加しても大丈夫なのでしょうか?
Wikiのタイトル以外は全て問題なく日本語が使えています。
私の環境で「てすと」を「編集」した場合のHTTPヘッダーです。
GET /wiki/1/%E3%81%A6%E3%81%99%E3%81%A8/edit HTTP/1.1
Encode部分はfmktさんと同じになっています。
こちらは「削除」の場合のHTTPヘッダーです。
POST /wiki/1/%C3%A3%C2%81%C2%A6%C3%A3%C2%81%C2%99%C3%A3%C2%81%C2%A8/
destroy HTTP/1.1
で、私は今までIEとFireFoxで試していたのですが、fmktさんはもしかしてNetscapeですか?
ブラウザが原因では?と思い、Netscapeでためしてみたら「てすと」の削除に成功しました。
以下がNetscapeで試した「削除」したときのHTTPヘッダーです。
POST /wiki/1/%E3%83%86%E3%82%B9%E3%83%88/destroy HTTP/1.1
これでfmktさんの使用しているブラウザがNetscapeであれば
原因はブラウザということで落ち着くのですが。
当方 IE7 です。
IE6で確認したら確かに削除できませんでした。
ブラウザのせいか orz
FireFox2.0系なら消せましたが、yhPaPaさんは 1.5でしたか?
IE7ですか。
IE7は削除可能なのですね。
確かにIEは6なんですが、FireFoxは2.0.0.6です。。。
FireFoxは設定の違いとかでしょうか。。。
私の強引な解決法(link_to内でDecode)では
Netscapeで日本語Wikiの登録も出来なくなってしまいました。
やはり、根本的な解決にはなっていませんでした。
Windows環境なので実験してみました。
てすと、の削除をIE6で実行しようとすると、
127.0.0.1 - - [05/Sep/2007:17:08:00 東京 (標準時)] "POST /wiki/
1/%C3%A3%C2%81%C2%A6%C3%A3%C2%81%C2%99%C3%A3%C2%81%C2%A8/destroy HTTP/
1.1" 302 113
http://localhost:3000/wiki/1/%E3%81%A6%E3%81%99%E3%81%A8 -> /wiki/
1/%C3%A3%C2%81%C2%A6%C3%A3%C2%81%C2%99%C3%A3%C2%81%C2%A8/destroy
127.0.0.1 - - [05/Sep/2007:17:08:00 東京 (標準時)] "GET /wiki/1/Page_index/
special HTTP/1.1" 200 8963
http://localhost:3000/wiki/1/%E3%81%A6%E3%81%99%E3%81%A8 -> /wiki/1/
Page_index/special
となり、確かに消えませんね。
FireFoxでは消せたので、ブラウザ側の問題と言う気もします。
確かに削除時のページ指定文字列が長くなているので、この文字列変換に手を入れればよいのかな?
実験ありがとう御座います。
> FireFoxでは消せたので、ブラウザ側の問題と言う気もします。
FireFoxでは消せましたか。。私の環境ではFireFoxでも消せません。
うーん。なぜでしょう。
> 確かに削除時のページ指定文字列が長くなているので、この文字列変換に手を入れればよいのかな?
確かにそうなのですが、このEncodeはブラウザが勝手に行っているのだと思うんです。
で、二重にEncodeされるなら、最初のEncodeをDecodeしてしまえ。
という修正をしたのですが、今度はNetscapeのほうがダメでした。
> 私の強引な解決法(link_to内でDecode)では
> Netscapeで日本語Wikiの登録も出来なくなってしまいました。
登録できなかったのは以下のようにアドレスに日本語Wiki名をつけてリクエストした場合でした
http://localhost/wiki/1/てすと
これは元々Netscape7.1では出来ないようです。
削除は可能でした。
とりあえずこの方法で我慢しようかと思います。
他にもっと良い解決方法があったらアドバイスお願いします。
fmktさん、Armadilloさん
色々とアドバイスを頂きありがとう御座いました。
他にもいくつか課題、問題を抱えていますのでまた相談させていただきたいと思っています。
その際はお時間がありましたら宜しくお願い致します。
一応、WindowsXP SP2上の、FireFox 1.5.0.12、で実験しました。
#プラグインの都合で2.0系に移行してないので...
ちなみに、ForeFoxで'削除'の所にマウスカーソルを置くと、左下に
http://hoge.fuga/wiki/1/てすと/destroy
みたいに表示されます。
IE6だと一瞬ですが、URLエンコードされた%**な長めな文字列が見て取れます。
FireFox2.0系だとどう見えるかを別PCで実験してみましたが、
(WinXP SP2上にて)
2.0.0.4 -> 削除成功
2.0.0.6 -> 削除成功
でした。
左下の見え方も1.5と同一でした。
うーん、何が違うんでしょう?FireFoxの設定はデフォルトのままのはずです。
2.0系の方は余計なプラグインも無い状態での実験です。
On 9月5日, 午後6:25, Armadillo <Armadillo1...@gmail.com> wrote:
> > > FireFoxでは消せたので、ブラウザ側の問題と言う気もします。
> > FireFoxでは消せましたか。。私の環境ではFireFoxでも消せません。
> > うーん。なぜでしょう。
>
> 一応、WindowsXP SP2上の、FireFox 1.5.0.12、で実験しました。
> #プラグインの都合で2.0系に移行してないので...
>
> ちなみに、ForeFoxで'削除'の所にマウスカーソルを置くと、左下にhttp://hoge.fuga/wiki/1/てすと/destroy
Armadilloさん
色々調べていただきありがとう御座います。
firefoxについては私の勘違いでした。
普段ネットするのには全てFirefoxを使用しているのですが、
firefoxでは新しいWikiを登録する際にアドレスに日本語を含むWikiのタイトルを設定できない為、
redmineの操作は全てIEで行っていたのですが、勘違いしていました。
firefoxで確認したところ削除可能でした。
余計な手間をかけさせてしまい申し訳ありませんでした。