wpf webbrowser uri包含其他语言,如韩语

时间:2013-12-30 03:44:46

标签: c# wpf uri

当我使用MyWebBrowser.Source = new Uri( uri );时,我遇到了麻烦

我想将韩语添加到 uri 。但是当我这样做时,我可以看到来自韩国的破碎角色。我寻找解决方案,但我无法理解方式。有人指示使用编码/解码的方式..但是,我不知道如何将它应用于我的代码。

请帮帮我

<Grid Background="White"><WebBrowser Name="MyWebBrowser" /></Grid>

    public MainWindow()
    {
        InitializeComponent();
    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        change_room();
    }
    private void change_room()
    {
        string room_name = "example";

        string nick = "한글";// 한글 means Korean.

        string uri = "http://" + room_name + ".com/chat?nick=" + nick ;

        try
        {
            MyWebBrowser.Source = new Uri(uri);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

string uri = "http://" + room_name + ".server.ohcs.uu.gl/chat?nick=" + HttpUtility.UrlEncode(nick, System.Text.Encoding.GetEncoding( “EUC-KR”) `) + "&text=&sessid=" + room_name; 上面的代码不能使韩文正确。

2 个答案:

答案 0 :(得分:0)

您应该对来自用户输入的字符串使用HttpUtility.UrlEncode方法,并使用包含破坏URL /未正确通过的字符的字符串(&符号,外来字符等)。这样,在URL中使用它就是安全的。

string uri = "http://" + HttpUtility.UrlEncode(room_name) + ".com/chat?nick=" + HttpUtility.UrlEncode(nick, System.Text.Encoding.GetEncoding("euc-kr"));

HttpUtility类可以在程序集System.Web.dll中找到。如果找不到与命名空间相关的错误,请确保使用System.Web.dll对话框添加对Add References的引用。

答案 1 :(得分:0)

我添加了有关我找到的解决方案的更多解释。


这是xaml代码&lt; .WebBrowser x:Name =“webBrowser”/。&gt;

下面的

是cs代码

public room1()

{

string nick =“한글”;

webBrowser.Navigate(“http:/freechat.esy.es/minichat?chat = room1&amp; nick =”+ nick);

}


以上代码不合适,因为“한글”不是我认为的常规字母。

UriBuilder builder = new UriBuilder(“http://freechat.esy.es/minichat?chat=room1&nick =한글”);

string url = builder.ToString();

WebBrowser web = new WebBrowser(); web.Navigate(URL);

UriBuilder 将包含“한글”[string url]的unregualr字母转换为可以接受网络的regualr字母。

输入字母:[http://freechat.esy.es/minichat?chat=room1&nick= 한글]

UriBuilder翻译的信件:

[HTTP:/freechat.esy.es/minichat聊天= ROOM1&安培;缺口= <强>%ED%95%9C%EA%B8%80


我找到了答案。我目前正在使用以下代码,现在工作正常。

    string make_uri(string uri)
    {
        UriBuilder ub = new UriBuilder(uri);
        string ubS = ub.ToString();
        return ubS;
    }

    string send_uri { get; set; }

    private void NavigateTo()
    {
        int cs = combo1.SelectedIndex;

        if (DN == "Your Nick")
        {
            if (cs == 0) send_uri = ("http://freechat.esy.es/minichat?chat=room1" + mode + key);
            else if (cs == 1) send_uri = ("http://freechat.esy.es/minichat?chat=chataa" + mode + key);
            else if (cs == 2) send_uri = ("http://freechat.esy.es/minichat?chat=room2" + mode + key);
        }
        else
        {
            if (cs == 0) send_uri = (make_uri("http://freechat.esy.es/minichat?chat=room1&nick=" + DN + mode + key));
            else if (cs == 1) send_uri = (make_uri("http://freechat.esy.es/minichat?chat=chataa&nick=" + DN + mode + key));
            else if (cs == 2) send_uri = (make_uri("http://freechat.esy.es/minichat?chat=room2&nick=" + DN + mode + key));
        }

        webBrowser.Navigate(send_uri);
    }