MFC使用webbrowser时navigate的url中有中文字符,在php服务器端取得的是乱码问题的解决方案

本文探讨了在PHP服务器端检测并转化中文URL编码的问题,通过使用mb_detect_encoding和iconv函数,确保了URL中中文字符的正确显示。

具体问题,大家可以看这篇的帖子,是我昨天刚发的:http://bbs.youkuaiyun.com/topics/390351062

解决方法:

由于url的中文字符在传输过程中被自动用gb2312编码了,所以需要再php服务器端先进行编码的检测,然后用相应地转化函数解析成utf-8的字符。检测及转化代码如下:

	$searchcontent=$_GET['search'];
	$encoding=mb_detect_encoding($searchcontent, "gb2312,utf-8");
	$searchcontent = iconv($encoding,"utf-8",$searchcontent);

希望对大家有所帮助!

MFC使用WebBrowser控件调用百度离线地图API,处理资源加载问题可从以下几个方面着手: #### 资源路径设置 要确保离线地图资源的路径正确。若前端代码写在htm文件中,设置WebBrowser.Navigate方法的URL参数为相对路径较困难,可能需自己拼接绝对路径。例如: ```cpp CString strPath; GetModuleFileName(NULL, strPath.GetBufferSetLength(MAX_PATH+1), MAX_PATH); strPath.ReleaseBuffer(); int nPos = strPath.ReverseFind('\\'); strPath = strPath.Left(nPos); strPath += "\\offline_map.html"; m_webBrowser.Navigate(strPath, NULL, NULL, NULL, NULL); ``` 上述代码获取当前程序的路径,然后拼接上离线地图HTML文件的相对路径,最后使用`Navigate`方法加载该文件。 #### 资源预加载 在使用离线地图API前,可预先加载必要的资源。比如,将地图瓦片、JavaScript库等资源提前下载到本地,并在HTML文件中正确引用: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>百度离线地图</title> <script src="local_path/baidumap_offline.js"></script> <!-- 其他必要的CSS和JS引用 --> </head> <body> <div id="map" style="width: 100%; height: 600px;"></div> <script> // 初始化地图 var map = new BMap.Map("map"); // 其他地图操作 </script> </body> </html> ``` 这里的`local_path`是本地资源存放的路径,要保证路径正确,确保资源能被正常加载。 #### 错误处理与日志记录 在代码中添加错误处理机制,当资源加载失败能及捕获并记录错误信息。例如,在JavaScript代码中监听资源加载事件: ```javascript var script = document.createElement('script'); script.src = 'local_path/baidumap_offline.js'; script.onload = function() { console.log('百度离线地图脚本加载成功'); }; script.onerror = function() { console.error('百度离线地图脚本加载失败'); }; document.head.appendChild(script); ``` 通过这种方式,可以及发现资源加载过程中出现的问题。 #### 缓存管理 合理利用浏览器的缓存机制,避免重复加载相同的资源。可以设置HTML文件的缓存策略,例如: ```html <meta http-equiv="Cache-Control" content="max-age=3600"> ``` 上述代码设置缓存的最大有效期为3600秒,即1,在有效期内浏览器会直接使用缓存的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值