大多数浏览器(例如Firefox和Chrome)在请求URL之前对URL进行Unicode规范化.例如,当chrome或firefox想要打开此链接时:
http://fa.wikipedia.org/wiki/???_????_?????
它包含波斯语Unicode字符,它们会自动将此字符串转换为:
http://fa.wikipedia.org/wiki/%D8%B3%DB%8C%D8%AF_%D9%85%D8%AD%D9%85%D8%AF_%D8%AE%D8%A7%D8%AA%D9%85%DB%8C
我想修改我网站中的超链接,以防止浏览器规范化unicode字符,这样当用户点击linke时,就会从服务器请求其纯(原始)URL.
这有什么诀窍吗?例如,源页面中的小javascript代码链接到此类URL.
更新:当我通过编程语言(例如Java)请求url时HttpURLConnection,它会请求原始URL并且不使用任何规范化(除了我明确调用UrlNormalizer.normalize(url)).但是,大多数浏览器和Linux的GET命令都会进行规范化.
我正在尝试使用特殊字符创建一个NSURL,如"","|"," - ",":"等.如果我的字符串中有任何这些字符,则NSURL不会初始化.如何使用这些字符创建NSURL?以下不起作用:
NSURL *url = [[NSURL alloc] initWithString:@"http://google.com?id=|test|"]; //if i remove the | it works.
Run Code Online (Sandbox Code Playgroud) 我已经在Django中使用这个url用户名正则表达了一段时间了:
url(r'^.../(?P<username>[-\w]+)/$'
Run Code Online (Sandbox Code Playgroud)
但是现在,我遇到了一个奇怪的案例,有时谷歌用这样的用户名回答:
luke.skywalker 替代的lukeskywalker
看起来我的正则表达式不接受点 - 我得到一个NoReverseMatch错误.有人可以帮我正确的正则表达式吗?
我有此功能来识别和转换标签,表情符号等
function convert_text($str) {
$regex = "/[@#](\w+)/";
//type and links
$hrefs = [
'#' => 'hashtag.php?hashtag',
'@' => 'user.php?user'
];
$result = preg_replace_callback($regex, function($matches) use ($hrefs) {
return sprintf(
'<a href="%s=%s">%s</a>',
$hrefs[$matches[0][0]],
$matches[1],
$matches[0]
);
}, $str);
//$result = preg_replace("/U\+([A-F0-9]{5})/", '\u{${1}}', $result);
$result = preg_replace('/U\+([A-F0-9]{5})/', '<span style="font-size:30px;">&#x\\1;</span>', $result);
return ($result);
}
Run Code Online (Sandbox Code Playgroud)
我想,使其认识http://并https://从文字和比转换为:
<a href="http://link.com">http://link.com</a>
如何在函数内部实现呢?
我正在为客户的主页创建一个动态的产品列表,我在IE8中发现了一个非常烦人的问题.
产品的URL使用以下结构构建:
http://www.domain.com/language/category/product_name.aspx
Run Code Online (Sandbox Code Playgroud)
当我用西班牙语显示网站并且类别包含特殊字符时出现问题"ñ":IE用字符替换字符"%c3%b1".
根据我的代码,我发现URL构造正确,但是当服务器显示结果页面时,所有包含特殊字符的URL都已被替换.
aspx页面有控件:
<asp:HyperLink ID="LinkTitle" runat="server">Product Name</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)
并且类背后的代码在ListView的ItemDataBound事件期间将值赋给控件
Dim L_LinkTit As HyperLink
Dim Link as String
L_LinkTit = LstView.FindControl("LinkTitle")
Link = "/" & Session("lang") & "/" & cat & "/" & product & ".aspx"
L_LinkTit.NavigateUrl = Link
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
当我在Windows Azure模拟器(开发环境)上运行Asp.Net MVC 2项目时,我遇到了下面提到的问题

我的web.config文件如下:
<httpRuntime maxUrlLength="4096" relaxedUrlToFileSystemMapping="true" maxQueryStringLength = "4096" requestValidationMode="4.0" />
Run Code Online (Sandbox Code Playgroud)
我的查询字符串URL如下:
注意:上面有1490 characters
我的控制器Action方法的重定向如下:
return RedirectToRoute("booking", new { action = "index", providerKey = providerKey, ownerKey = ownerKey, arguments = arguments, step = step });
Run Code Online (Sandbox Code Playgroud)
注意: arguments 具有以上查询字符串详细信息
如何摆脱这个错误页面?
.net azure asp.net-mvc-routing azure-web-roles asp.net-mvc-2