我正在使用c#/.net开发Windows桌面应用程序,并希望添加一个功能,从应用程序中打开Windows资源管理器并在计算机上搜索查询。
我计划使用Windows搜索协议来实现它。以下是我的代码片段。rawQuery从我的应用程序传递到Windows资源管理器搜索框中。
以上代码存在一个问题。如果rawQuery包含非英文字符,那么在进行编码(HttpUtility.UrlEncode())后,在Windows资源管理器的搜索框中显示的结果将不正确。例如,如果rawQuery是中文,比如“微软”,则在Windows资源管理器中搜索将会显示为微软。这很糟糕。
然而,如果不对rawQuery进行编码,则特殊字符,如&、%等,无法在Windows资源管理器的搜索框中显示。
所以我不确定应该对哪些字符进行编码。我在搜索协议规范文档中没有找到相关文档。
请问有人知道应该对哪些字符进行编码吗?
我计划使用Windows搜索协议来实现它。以下是我的代码片段。rawQuery从我的应用程序传递到Windows资源管理器搜索框中。
var query = "&query=" + HttpUtility.UrlEncode(rawQuery);
var location = string.Empty;
foreach (var drive in DriveInfo.GetDrives().Where(d => d.IsReady && d.DriveType.Equals(DriveType.Fixed)))
{
location += "&crumb=location:" + HttpUtility.UrlEncode(drive.Name);
}
var searchQuery = "search:displayname=Search computer" + query + location;
Process.Start(searchQuery);
以上代码存在一个问题。如果rawQuery包含非英文字符,那么在进行编码(HttpUtility.UrlEncode())后,在Windows资源管理器的搜索框中显示的结果将不正确。例如,如果rawQuery是中文,比如“微软”,则在Windows资源管理器中搜索将会显示为微软。这很糟糕。
然而,如果不对rawQuery进行编码,则特殊字符,如&、%等,无法在Windows资源管理器的搜索框中显示。
所以我不确定应该对哪些字符进行编码。我在搜索协议规范文档中没有找到相关文档。
请问有人知道应该对哪些字符进行编码吗?