none
DataGridのHyperLinkのNavigateUrlを文字化けさせない方法 RRS feed

  • 質問

  • 開発環境 WindowXp Professional SP2
         VisualStudo2005 Professional
           
    ASP2.0
    DataGridにItemTemplateにHyperlinkを作成し、NavigateUrlを動的に作成しています。
    file:///X:共有フォルダ/書式/文書.doc
    のような日本語交じりのURLを生成したいのですが、実行してみるとURLの日本語部分が文字化けしてしまいます。
    <%@  Page ResponseEncoding="shift_jis" %>にしてみてもダメでした。
    何かよい方法をご存知の方いらっしゃいましたらご教授ください。
    2007年7月11日 9:59

回答

  • どのように文字化けしていますか?

     

    リンクは効果を発揮していませんか?

     

    実際の値で話をしましょう。

    2007年7月11日 12:58
  • file:///X:/@%e5

    このfile:///とスラッシュが三つあるからじゃないの?

    2007年7月21日 13:19
  • はじめまして。

    TAKASEです。

     

    私も丁度同じような問題となったので、調べました。

     

    操作自体(ダウンロード)には、問題ないのですが、

    ステータスバーに表示される内容が文字化けするのが気になる方がいるので。

     

    asp:HyperLink は NavigateUrl に指定した値は自動的にエンコードされてしまうみたいです。

    a href だとエンコードされないので、そちらを利用することにしました。

     

    下記の方法ならば、DataViewできちんとバインドしてくれます。

     <a href=<%# Eval("URL") %>><%# Eval("FileName") %></a>

     

    なるべくなら、ファイル名は半角英数字がベストなのですが、やはりどうしても日本語を利用したいという

    ユーザの方もいるので対応しました。

     

    私の開発環境は、NET2005 ASP.NET C# です

     

     

     

    2008年10月21日 2:48

すべての返信

  • どのように文字化けしていますか?

     

    リンクは効果を発揮していませんか?

     

    実際の値で話をしましょう。

    2007年7月11日 12:58
  • 説明が足りず申し訳ございません。
    以下のソースで
    <ItemTemplate>
          <asp:HyperLink ID="HyperLink1" runat="server"
              Text='<%# DataBinder.Eval(Container.DataItem, "文書名") %>'
              NavigateUrl='<%#"file:///X:/@共有キャビネット/04.書式集/あ~こ/" +
             DataBinder.Eval(Container.DataItem, "URL") %>' />
    </ItemTemplate>

    以下のようなリンクが生成されます。
    <a id="ctl00_ContentPlaceHolder1_DG_Document_ctl02_HyperLink1" href="file:///X:/@%e5%85%b1%e6%9c%89%e3%82%ad%e3%83%a3%e3%83%93%e3%83%8d%e3%83%83%e3%83%88/04.%e6%9b%b8%e5%bc%8f%e9%9b%86/%e3%81%82%ef%bd%9e%e3%81%93/%e6%a5%ad%e5%85%b1/%e6%a5%ad%e5%85%b1002%e9%87%8d%e8%a6%81%e5%8d%b0%e5%88%b7%e7%89%a9%e6%ae%8b%e9%ab%98%e7%85%a7%e4%bc%9a%e8%a1%a8.doc">文書1</a>

    リンクとしては機能しているのですが、当然「ページを表示できません。」になります。
    ブラウザのアドレスバーには以下のように表示されています。
    X:\@a?±a??a?-a?£a??a??a??a??\04.a?,a??e??\a??i??a??\a\-a?±\a\-a?±002e??e|?a?°a?・c?caR?e≪?c?§a??e!¨.doc

    2007年7月12日 0:08
  • file:///X:/@%e5

    このfile:///とスラッシュが三つあるからじゃないの?

    2007年7月21日 13:19
  • 中博俊様 アドバイスありがとうございます。
    以下のように"/"スラッシュを2つに減らしてやってみました。

    <ItemTemplate>
          <asp:HyperLink ID="HyperLink1" runat="server"
              Text='<%# DataBinder.Eval(Container.DataItem, "文書名") %>'
              NavigateUrl='<%#"file://X:/@共有キャビネット/04.書式集/あ~こ/" +        DataBinder.Eval(Container.DataItem, "URL") %>' />
        </ItemTemplate>

    生成されたHyperLinkも/が減りましたが、文字化けは解消せず、クリックしてもリンクとして機能しなくなりました。(ページが表示されませんの画面にも行かない)

    <a id="ctl00_ContentPlaceHolder1_DG_Document_ctl187_HyperLink1" href="file://X:/@%e5%85%b1%e6%9c%89%e3%82%ad%e3%83%a3%e3%83%93%e3%83%8d%e3%83%83%e3%83%88/04.%e6%9b%b8%e5%bc%8f%e9%9b%86/%e3%81%82%ef%bd%9e%e3%81%93/%e6%99%ae%e9%80%9a/%e6%99%ae%e9%80%9a522%e6%99%ae%e9%80%9a%e9%a0%90%e9%87%91%e5%85%a5%e9%87%91%e5%8f%96%e6%ac%a1%e5%b8%b3%e5%8f%97%e5%8f%96%e8%a8%bc.doc">文書1</a>

    リンク中の"@"や"/"が悪さをしてるのはないかと思い、
    NavigateUrl='<%#"file://X:/書式/test..doc"%>' />
    で試したところ、リンクとしては機能するようになりましたが、やはり以下のように文字化けし、
    <a id="ctl00_ContentPlaceHolder1_DG_Document_ctl02_HyperLink1" href="file://X:/%e6%9b%b8%e5%bc%8f/test.doc">文書1</a>
    実際にクリックした場合ブラウザのアドレス欄は
    X:\%e6%9b%b8%e5%bc%8f\test.doc
    となりました。

    やはりDataGrid中のhyperlinkで日本語を使用するのは不可能なのでしょうか。
    2007年7月23日 1:56
  • はじめまして。

    TAKASEです。

     

    私も丁度同じような問題となったので、調べました。

     

    操作自体(ダウンロード)には、問題ないのですが、

    ステータスバーに表示される内容が文字化けするのが気になる方がいるので。

     

    asp:HyperLink は NavigateUrl に指定した値は自動的にエンコードされてしまうみたいです。

    a href だとエンコードされないので、そちらを利用することにしました。

     

    下記の方法ならば、DataViewできちんとバインドしてくれます。

     <a href=<%# Eval("URL") %>><%# Eval("FileName") %></a>

     

    なるべくなら、ファイル名は半角英数字がベストなのですが、やはりどうしても日本語を利用したいという

    ユーザの方もいるので対応しました。

     

    私の開発環境は、NET2005 ASP.NET C# です

     

     

     

    2008年10月21日 2:48
  • るーしぇ さん、

     

    こんにちは!

    フォーラム オペレーターの服部 清次です。

    るーしぇ さんがこちらの質問を投稿されてからしばらく経ちましたが、その後の状況はいかがでしょうか?

    文字化けの問題は、無事解決しましたでしょうか?

     

    るーしぇ さんの現在の状況が気になるところなのですが、今回、中博俊 さんと takase さんの回答が役に立ったのではないかと思いましたので、こちらの情報を他の方々に共有していただくためにも、ひとまず、私の方で回答チェックを付けさせていただきました。

    もし、るーしぇ さんの問題がまだ解決していない場合は、遠慮なく回答チェックを外して質問を続けてください。

    その際には、現在の状況も併せて教えていただければ嬉しいです。

     

    これからも MSDN Forum をよろしくお願いします。

    それでは、また!

     

    _____________________________________________

    マイクロソフト株式会社 フォーラム オペレータ 服部 清次

    2008年10月31日 9:07
  • TAKASEさんありがとうございます。
    ご提示いただいた方法で、ばっちりうまくいきました。

    半分諦めて別件に取り組んでいたためお礼が遅れて申し訳ございませんでした。
    2008年12月3日 0:58