我有一个JavaScript请求转到ASP.Net(2.0)HTTP处理程序,它将请求传递给java Web服务.在此系统中,特殊字符(例如具有重音的字符)无法正确传递.
例如
Düsseldorfhttp://site/serviceproxy.ashx?q=D%FCsseldorf,据我所知,它在ISO-8859-1和UTF-8中都有效.(除非它是UTF-8中的%c3%bc)HttpContext.Current.Request.QueryString.Get("q")返回D?sseldorf故障开始的地方.HttpUtility.UrlEncode(HttpContext.Current.Request.QueryString.Get("q"), Encoding.GetEncoding("ISO-8859-1"))返回D%3fsseldorf('''')HttpUtility.UrlEncode(HttpContext.Current.Request.QueryString.Get("q"), Encoding.UTF8)返回D%ef%bfsseldorf因此,该值不会被解码,也不会被正确地重新编码以传递给java服务.
HttpContext.Current.Request.Url.Query是?q=D%FCsseldorf&output=json&from=1&to=10HttpContext.Current.Request.QueryString.ToString()是q=D%ufffdsseldorf&output=json&from=1&to=10为什么这样,我怎么能告诉它HttpContext尊重请求标题,包括:
Content-Type=application/x-www-form-urlencoded;+charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
并QueryString使用UTF-8字符集解码URL .
附录:正如答案所指出的那样,问题不在于解码与编码有关; escape()在JavaScript中使用不会根据UTF-8进行转义,而使用时encodeURIComponent()也是如此.
javascript asp.net diacritics character-encoding encodeuricomponent
我有一个javascript,它将一些特定的信息发送到PHP api.在发送之前它执行encodeURI.如何在PHP中"解码"它?我知道urldecode/urlencode与javascript编码/ decodeURI不同所以我可以使用什么?
今天我遇到了一个奇怪的事情,同时在我们的应用程序中排除了流氓AJAX请求.我们使用jQuery.param构建请求字符串将数据发送回服务器.
在一个场景中,提供给param函数的对象有一个null选项,所以它看起来像这样:
var myData = {
x : 1,
y : null
};
var params = jQuery.param(myData);
Run Code Online (Sandbox Code Playgroud)
这段代码实际上埋藏在骨干集合中,但原理是一样的.
现在,当服务器收到变量的参数y是文字字符串"null"而不是存在时,我感到非常震惊null.
经过一番挖掘后,我发现encodeURIComponent(null)返回字符串"null"并获得更有趣的'' + null收益"null".这在Chrome 23以及Firefox 11上进行了测试.
最终发送到jQuery.param函数的对象是从函数的参数构建的,而null是参数的完全有效值.我只是通过构建对象来解决它y : param || '',但我很好奇本机JS函数的明显错误,以及为什么'' + null = "null",因为它们通常被认为是两个不同的概念.
该代码在nodejs v0.10.21中中断
#!/usr/bin/env node
"use strict";
var urlEncoded = 'http://zh.wikipedia.org/wiki/%F0%A8%A8%8F';
var urlDecoded = decodeURI( urlEncoded );
var urlLeafEncoded = urlEncoded.substr( 29 );
var urlLeafDecoded = decodeURIComponent( urlLeafEncoded );
var urlLeafFirstCharacterDecoded = urlLeafDecoded.charAt( 0 );
var urlLeafFirstCharacterEncoded = encodeURIComponent( urlLeafFirstCharacterDecoded );
console.log( 'URL encoded = ' + urlEncoded );
console.log( 'URL decoded = ' + urlDecoded );
console.log( 'URL leaf encoded = ' + urlLeafEncoded );
console.log( 'URL leaf decoded = ' + urlLeafDecoded );
console.log( 'URL leaf first character encoded …Run Code Online (Sandbox Code Playgroud) 我正在处理一个项目,但在使用 encodeURIcomponent 函数时遇到了一些问题。该站点是一个社交媒体内容库,它允许我将副本存储在 CMS 中,并将其显示在页面上,并带有链接和按钮以共享到社交媒体站点。我正在为 Twitter 组件苦苦挣扎,需要一些帮助。这是我的代码:
function tweetClick() {
var url = "http://urlfromcms.com";
var text = "I'm getting this text dynamically from the CMS too.";
window.open('http://twitter.com/share?url='+encodeURIComponent(url)+'&text='+encodeURIComponent(text), '');
} Run Code Online (Sandbox Code Playgroud)
<a class="shareitbutton w-button" href="#" target="_blank" title="Tweet" onclick="tweetClick(); return false;">Tweet It!</a>Run Code Online (Sandbox Code Playgroud)
这就像一个有一个问题的冠军。如果副本有与号、撇号、引号等,那么它也会被编码,并且需要编辑推文,这违背了目的。如何编码以在 twitter 需要的空间中获得 %20 但不理会我的&符号和撇号?
任何帮助将不胜感激!
我正在尝试在我的 Angular6 项目之一中使用动态图像路径作为背景图像。我曾尝试使用 [style.background-image] & [style.background] 甚至 encodeURI 来修复路径中的空格,也尝试使用 *ngIF 以便在加载后呈现。
情况1:
imgPath 是绝对路径,我将 JSON 数据的路径附加到该路径。
HTML代码
<a routerLink="/article/{{news.id}}">
<img [style.background-image]="'url(' + imgPath + news.encodedImage.encocoded_primary_image + ')'">
</a>
Run Code Online (Sandbox Code Playgroud)
成分
使用 encodeURI() 函数检查图像的空格和其他括号
'encocoded_primary_image': encodeURI(res['primary_image']['file_path'])
Run Code Online (Sandbox Code Playgroud)
输出
其他情况
我试图用[style.background],[ngStyle],改变图像标签div标签。
但是我无法理解为什么很少有图像在渲染而很少有图像没有渲染,尽管路径正确生成,我已经通过在新选项卡中打开它们进行了确认。
任何帮助将不胜感激
在向服务器执行http-get请求时我仍然不明白的一点是使用JS函数encodeURIcomponent来编码http-get的每个组件的优点.
做一些测试我看到服务器(使用PHP)也正确获取http-get请求的值,如果我不使用encodeURIcomponent! 显然我还需要在客户端级别编码特殊字符&?= /:否则像"和平与爱=美德"这样的http-get值将被视为http-get请求的新键值对而不是单个值.但是为什么encodeURIcompenent还会编码许多其他字符,例如'è',它被翻译成%C3%A8,必须使用utf8_decode函数在PHP服务器上解码.
通过使用encodeURIcomponent,http-get请求的所有值都是utf8编码的,因此当在PHP中获取它时,我必须每次在每个$ _GET值上调用utf8_decode函数,这非常烦人.
为什么我们不能只编码&?= /:字符?
另请参见:JS encodeURIComponent结果与FORM创建的结果不同 它表明encodeURIComponent甚至没有正确编码,因为简单的浏览器FORM GET以不同的方式编码像'€'这样的字符.所以我仍然想知道这个encodeURIComponent是什么用的?
C#与encodeURIComponent相当,在SO和其他地方都有很好的覆盖,但是呢?encodeURI呢?基本上,我想编码无效的URL字符,而不是保留的字符,如/,:等于是
"http://www.example.com/my cool page"
Run Code Online (Sandbox Code Playgroud)
将被编码为
"http://www.example.com/my%20cool%20page"
Run Code Online (Sandbox Code Playgroud)
有没有东西进入.NET这样做?或者是正则表达式我最好的选择?
encodeURI()Powershell 中的 Javascripts /相当于什么encodURIComponent()?
我正在对 URL 进行编码(%20其中需要一些 s),但我讨厌手动执行此操作。
encodeURIComponent转义除以下内容之外的所有字符: - _ . ! ~ * ' ( )
但是是否可以扩展功能编码上述特殊字符.
我知道我可以这样做:
encodeURIComponent(str).replace(/\(/g, "%28").replace(/\)/g, "%29");
Run Code Online (Sandbox Code Playgroud)
但我想要这样的功能,而不使用encodeURIComponent上的其他功能
encodeURIComponent(str);
Run Code Online (Sandbox Code Playgroud) javascript ×9
urlencode ×3
php ×2
.net ×1
angular ×1
angular7 ×1
asp.net ×1
c# ×1
charat ×1
diacritics ×1
multibyte ×1
node.js ×1
powershell ×1
twitter ×1