C#之WebBrowser.Navigate地址为中文乱码问题

一、背景

小伙伴们在C#中开发时,可能会遇到WebBrowser.Navigate 方法中的参数为string类型的中文地址时,不识别的情况。

二、解决思路

仔细观察可以发现WebBrowser.Navigate 方法的参数还可以是Uri,经过尝试发现只要将中文字符串转为Uri,然后再传入WebBrowser.Navigate 方法即可。

三、注意事项

1.关于如何再wpf中显示pdf可以参考博主的这篇文章
wpf之pdf的显示
2.我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出BIM相关软件开发以及编程干货。
3.欢迎加入BIM行业开发交流1群,获取更多开发资料 群号:711844216

当Web浏览器(如IE、Chrome等)的Navigate方法引发堆栈溢出错误,并弹出错误提示时,通常是因为处理某个网页内容时出现了无限递归或者其他循环调用的问题。为了避免这种错误并阻止弹出的错误提示,你可以尝试以下几个步骤: 1. **检查代码逻辑**:首先排查导致无限递归的部分,找出循环引用或条件分支可能导致无限次调用的地方。 2. **设置错误处理**:在调用Navigate之前,可以捕获异常并采取适当的处理,例如关闭当前页面或记录错误日志,而不是让程序崩溃。 ```csharp try { webBrowser.Navigate(url); } catch (StackOverflowException) { // 记录错误或者清理资源 Console.WriteLine("Stack overflow occurred. Closing the page."); webBrowser.Document.Body.innerHTML = ""; // 清空页面内容 webBrowser.Stop(); // 停止导航 } ``` 3. **限制递归深度**:如果问题是由于某个函数递归调用过多,可以在递归开始时检查是否达到最大允许深度,超过则停止。 4. **使用异步操作**:如果可能,尽量将耗时的操作转换为异步,避免阻塞主线程造成无限制的回调。 5. **更新控件状态**:在导航完成后更新UI状态,防止因未响应而导致的死循环。 记住,虽然可以暂时阻止错误提示,但更重要的是找到并修复根本原因,这样才能长期解决问题。如果你不确定问题所在,可以提供具体的代码片段以便更准确地诊断。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值