浏览器自动转码如何给URL进行转码的

怎么把网页中出现的带中文的url,自动转码
[问题点数:100分,结帖人ayun0717]
怎么把网页中出现的带中文的url,自动转码
[问题点数:100分,结帖人ayun0717]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2018年1月 Web 开发大版内专家分月排行榜第一2017年12月 Web 开发大版内专家分月排行榜第一2017年6月 Web 开发大版内专家分月排行榜第一2017年2月 Web 开发大版内专家分月排行榜第一2016年3月 Web 开发大版内专家分月排行榜第一2015年8月 Web 开发大版内专家分月排行榜第一
2018年4月 Web 开发大版内专家分月排行榜第二2018年3月 Web 开发大版内专家分月排行榜第二2018年2月 Web 开发大版内专家分月排行榜第二2017年11月 Web 开发大版内专家分月排行榜第二2017年10月 Web 开发大版内专家分月排行榜第二2017年9月 Web 开发大版内专家分月排行榜第二2017年8月 Web 开发大版内专家分月排行榜第二2017年7月 Web 开发大版内专家分月排行榜第二2017年5月 Web 开发大版内专家分月排行榜第二2017年4月 Web 开发大版内专家分月排行榜第二2017年3月 Web 开发大版内专家分月排行榜第二2017年1月 Web 开发大版内专家分月排行榜第二2016年11月 Web 开发大版内专家分月排行榜第二2016年9月 Web 开发大版内专家分月排行榜第二2016年8月 Web 开发大版内专家分月排行榜第二2016年7月 Web 开发大版内专家分月排行榜第二2016年6月 Web 开发大版内专家分月排行榜第二2016年5月 Web 开发大版内专家分月排行榜第二2016年4月 Web 开发大版内专家分月排行榜第二2016年2月 Web 开发大版内专家分月排行榜第二2015年9月 Web 开发大版内专家分月排行榜第二2015年7月 Web 开发大版内专家分月排行榜第二2015年6月 Web 开发大版内专家分月排行榜第二2015年4月 Web 开发大版内专家分月排行榜第二2015年3月 Web 开发大版内专家分月排行榜第二2015年2月 Web 开发大版内专家分月排行榜第二
2014年7月 Web 开发大版内专家分月排行榜第三
匿名用户不能发表回复!|如何批量把文本转码成浏览器地址栏能用的URL码,自动换行的。如图,求方法工具_百度知道
如何批量把文本转码成浏览器地址栏能用的URL码,自动换行的。如图,求方法工具
转码成而不是
我有更好的答案
你这个是SEM跟踪代码把?这个你其实不需要转换,你只需要在网站后面写跟踪代码就好了
要转换,有用。现在用的是网站在线编码转换需要一条一条换 麻烦
哦....你留个QQ邮箱吧,我发给你是用的EX的宏命令实现的,你自己翻译下就好了
怎么翻译啊
我写的是英文的,你把英文翻译成中文就行了啊
怎么用啊。朋友
你翻译过来就好了啊,然后点生成就行了啊
采纳率:52%
为您推荐:
其他类似问题
浏览器地址栏的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于url转码问题
转载自:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html与http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
一、问题的由来
URL就是网址,只要上网,就一定会用到。
一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。比如,世界上有英文字母的网址
“http://www.abc.com”,但是没有希腊字母的网址“http://www.aβγ.com”(读作阿尔法-贝塔-伽玛.com)。这是
因为网络标准 做了硬性规定:
"...Only alphanumerics [0-9a-zA-Z], the special characters
"$-_.+!*'()," [not including the quotes - ed], and reserved
characters used for their reserved purposes may be used unencoded
within a URL."
“只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于
这意味着,如果URL中有汉字,就必须编码后使用。但是麻烦的是,RFC
1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。这导致“URL编码”成为了一个混乱的领域。
下面就让我们看看,“URL编码”到底有多混乱。我会依次分析四种不同的情况,在每一种情况中,浏览器的URL编码方法都不一样。把它们的差异解释
清楚之后,我再说如何用Javascript找到一个统一的编码方法。
二、情况1:网址路径中包含汉字
打开IE(我用的是8.0版),输入网址“http://zh.wikipedia.org/wiki/春节
”。 注意,“春节”这两个字此时是网址路径的一部分。
查看HTTP请求的头信息,会发现IE实际查询的网址是“http://zh.wikipedia.org/wiki/春节
”。 也就是说,IE自动将“春节”编码成了“春节”。
我们知道,“春”和“节”的utf-8编码分别是“E6 98 A5”和“E8 8A
82”,因此,“春节”就是按照顺序,在每个字节前加上%而得到的。(具体的转码方法,请参考我写的 。)
在Firefox中测试,也得到了同样的结果。所以,结论1就是,网址路径的编码,用的是utf-8编码。
三、情况2:查询字符串包含汉字
在IE中输入网址“http://www.baidu.com/s?wd=春节
”。注意,“春节”这两个字此时 属于查询字符串,不属于网址路径,不要与情况1混淆。
查看HTTP请求的头信息,会发现IE将“春节”转化成了一个乱码。
切换到十六进制方式,才能清楚地看到,“春节”被转成了“B4 BA BD DA”。
我们知道,“春”和“节”的GB2312编码(我的操作系统“Windows XP”中文版的默认编码)分别是“B4 BA”和“BD
DA”。因此,IE实际上就是将查询字符串,以GB2312编码的格式发送出去。
Firefox的处理方法,略有不同。它发送的HTTP
Head是“wd=����”。也就是说,同样采用GB2312编码,但是在每个字节前加上了%。
所以,结论2就是,查询字符串的编码,用的是操作系统的默认编码。
四、情况3:Get方法生成的URL包含汉字
前面说的是直接输入网址的情况,但是更常见的情况是,在已打开的网页上,直接用Get或Post方法发出HTTP请求。
根据台湾中兴大学
,这时的编码方法由网页的编码决定,也就是由HTML源码中字符集的设定决定。
如果上面这一行最后的charset是UTF-8,则URL就以UTF-8编码;如果是GB2312,URL就以GB2312编码。
举例来说,百度是GB2312编码,Google是UTF-8编码。因此,从它们的搜索框中搜索同一个词“春节”,生成的查询字符串是不一样的。
百度生成的是����,这是GB2312编码。
Google生成的是春节,这是UTF-8编码。
所以,结论3就是,GET和POST方法的编码,用的是网页的编码。
五、情况4:Ajax调用的URL包含汉字
前面三种情况都是由浏览器发出HTTP请求,最后一种情况则是由Javascript生成HTTP请求,也就是Ajax调用。还是根据吕瑞麟老师的
文章,在这种情况下,IE和Firefox的处理方式完全不一样。
举例来说,有这样两行代码:
  url = url + "?q=" +document.myform.elements[0]. //
假定用户在表单中提交的值是“春节”这两个字
  http_request.open('GET', url, true);
那么,无论网页使用什么字符集,IE传送给服务器的总是“q=����”,而Firefox传送给服务器的总是“q=�
�节”。也就是说,在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是
采用utf-8编码。这就是我们的结论4。
六、Javascript函数:escape()
好了,到此为止,四种情况都说完了。
假定前面你都看懂了,那么此时你应该会感到很头痛。因为,实在太混乱了。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结
果。如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求?
回答是有的,就是使用Javascript先对URL编码,然后再向服务器提交,不要给浏览器插手的机会。因为Javascript的输出总是一致
的,所以就保证了服务器得到的数据是格式统一的。
Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape()。虽然这个函数现在已经不提倡使用了,但是由于历史原因,
很多地方还在使用它,所以有必要先从它讲起。
实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如“春节”的返回结果
是%u,也就是说在Unicode字符集中,“春”是第6625个(十六进制)字符,“节”是第8282个(十六进制)字符。
它的具体规则是,除了ASCII字母、数字、标点符号“@ * _ + - .
/”以外,对其他所有字符进行编码。在/u0000到/u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式。对应的解码函数是
所以,“Hello World”的escape()编码就是“Hello
World”。因为空格的Unicode值是20(十六进制)。
还有两个地方需要注意。
首先,无论网页的原始编码是什么,一旦被Javascript编码,就都变为unicode字符。也就是说,Javascipt函数的输入和输出,
默认都是Unicode字符。这一点对下面两个函数也适用。
其次,escape()不对“+”编码。但是我们知道,网页在提交表单的时候,如果有空格,则会被转化为+字符。服务器处理数据的时候,会把+号处
理成空格。所以,使用的时候要小心。
七、Javascript函数:encodeURI()
encodeURI()是Javascript中真正用来对URL编码的函数。
它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号“; / ? : @
#”,也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。
它对应的解码函数是decodeURI()。
需要注意的是,它不对单引号'编码。
八、Javascript函数:encodeURIComponent()
最后一个Javascript编码函数是encodeURIComponent()。与encodeURI()的区别是,它用于对URL的组成部分
进行个别编码,而不用于对整个URL进行编码。
因此,“; / ? : @ & = + $ ,
#”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。
它对应的解码函数是decodeURIComponent()。
网页里的form编码其实不完全取决于网页编码,form标记中有一个accept-charset属性,在非ie浏览器种,如果将其赋值(比如
accept-charset="UTF-8"),则表单会按照这个值表示的编码方式进行提交。
在ie下,我的兼容解决办法是:
form1.onsubmit=function(){
document.charset=this.getAttribute('accept-charset');
PS2 :字符编码笔记:ASCII,Unicode和 UTF-8
1. ASCII码
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出
256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。
ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制),大写的字母A是65(二进制
)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
2、非ASCII编码
英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。
于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的&的编码为130(二进制)。这样一来,这些欧洲国家使
用的编码体系,可以表示最多256个符号。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码
中代表了&,在希伯来语编码中却代表了字母Gimel
(ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。
至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。
比如,简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256x256=65536个符号。
中文编码的问题需要专文讨论,这篇笔记不涉及。这里只指出,虽然都是用多个字节表示一个符号,但是GB类的汉字编码与后文的Unicode和
UTF-8是毫无关系的。
正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则
用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。
可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就
像它的名字都表示的,这是一种所有符号的编码。
Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母
Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。具体的符号对应表,可以查询
,或者专门的 。
4. Unicode的问题
需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
比如,汉字“严”的unicode是十六进制数4E25,转换成二进制数足足有15位(101),也就是说这个符号的表示
至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。
这里就有两个严重的问题,第一个问题是,如何才能区别unicode和ascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号
呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必
然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。
它们造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。2)unicode
在很长一段时间内无法推广,直到互联网的出现。
互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-
16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n&1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制
位,全部为这个符号的unicode码。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
00 007F | 0xxxxxxx
00 07FF | 110xxxxx 10xxxxxx
00 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
10 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
下面,还是以汉字“严”为例,演示如何实现UTF-8编码。
已知“严”的unicode是4E25(101),根据上表,可以发现4E25处在第三行的范围内(0000
FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx
10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是
“01”,转换成十六进制就是E4B8A5。
6. Unicode与UTF-8之间的转换
通过上一节的例子,可以看到“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。它们之间的转换可以通过程序实
在Windows平台下,有一个最简单的转化方法,就是使用内置的记事本小程序Notepad.exe。打开文件后,点击“文件”菜单中的“另存
为”命令,会跳出一个对话框,在最底部有一个“编码”的下拉条。
里面有四个选项:ANSI,Unicode,Unicode big endian 和 UTF-8。
1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体
中文版会采用Big5码)。
2)Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little
endian格式。
3)Unicode big endian编码与上一个选项相对应。我在下一节会解释little endian和big
endian的涵义。
4)UTF-8编码,也就是上一节谈到的编码方法。
选择完”编码方式“后,点击”保存“按钮,文件的编码方式就立刻转换好了。
7. Little endian和Big endian
上一节已经提到,Unicode码可以采用UCS-2格式直接存储。以汉字”严“为例,Unicode码是4E25,需要用两个字节存储,一个字节
是4E,另一个字节是25。存储的时候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little
endian方式。
这两个古怪的名称来自英国作家斯威夫特的《格列佛游记》。在该书中,小人国里爆发了内战,战争起因是人们争论,吃鸡蛋时究竟是从大头(Big-
Endian)敲开还是从小头(Little-Endian)敲开。为了这件事情,前后爆发了六次战争,一个皇帝送了命,另一个皇帝丢了王位。
因此,第一个字节在前,就是”大头方式“(Big endian),第二个字节在前就是”小头方式“(Little
endian)。
那么很自然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪一种方式编码?
Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做”零宽度非换行空格“(ZERO
WIDTH NO-BREAK SPACE),用FEFF表示。这正好是两个字节,而且FF比FE大1。
如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF
FE,就表示该文件采用小头方式。
下面,举一个实例。
打开”记事本“程序Notepad.exe,新建一个文本文件,内容就是一个”严“字,依次采用ANSI,Unicode,Unicode
big endian 和 UTF-8编码方式保存。
然后,用文本编辑软件 的”十六进制功能“,观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节“D1
CF”,这正是“严”的GB2312编码,这也暗示GB2312是采用大头方式存储的。
2)Unicode:编码是四个字节“FF FE 25 4E”,其中“FF
FE”表明是小头方式存储,真正的编码是4E25。
3)Unicode big endian:编码是四个字节“FE FF 4E 25”,其中“FE
FF”表明是大头方式存储。
4)UTF-8:编码是六个字节“EF BB BF E4 B8 A5”,前三个字节“EF BB
BF”表示这是UTF-8编码,后三个“E4B8A5”就是“严”的具体编码,它的存储顺序与编码顺序是一致的。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。URL编码方法相关的博客
关于JavaScript的跨域问题(Cross Domain)的讨论, 网上有太多的资源了。国内的程序猿写了非常多的优秀文章,Jerry这里就不再重复了。 直入主题,最近我正在做一个原型开发:通过SAP云平台和SAP Cloud Connector把On-P
PHP cURL请求详解 在PHP后端的开发过程中,除了获取数据库的数据和处理数据的内部逻辑,往往还需要请求其他服务器接口的数据,我们一般有3种方式来获取数据,分别是: file_get_contents fsockopen curl 3种常用的接口获取方式简
本文档对日常学习中用 python 做数据爬取时所遇到的一些问题做简要记录,以便日后查阅,部分问题可能因为认识不到位会存在一些误解,敬请告知,万分感谢,共同进步。 估算网站规模 该小节主要针对于整站爬取的情况。 爬取整站之前,肯定是要先对一个网站的规模进行估计
一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Jav
URL编码方法相关问答
云服务器(Elastic Compute Service,简称 ECS)是一种简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本,使您更专注于核心业务创新。本文分为Linux系统操作运维和Windows系统
JS 针对 URL 链接有两个编码方法, encodeURI 和 encodeURIComponent 。
网上解释:
encodeURI 对完整 URL 进行编码时使用;保留了; / ? : @ & = + $
encodeURIComponen
这个问题源于此贴。http://segmentfault.com/q/...,源于@Sunny 三楼回答的“干扰串“http://www.awflasher.com/jsmail。在这里贴出实际工作的源码:
function htm
我直接运行mian方法,显示正常
![1](https://oss-cn-hangzhou.aliyuncs.com/yqfiles/2cdcc48f334a5d7782.jpeg)
![2](https://o
URL编码方法相关问题集
...&&);pageEncoding=&&UTF-8&&的作用是设置JSP编译成Servlet时使用的编码。 2、contentType=&&text/charset=UTF-8&&的作用是指定对服务器响应进行重新编码的编码。 3、request.
在Android中编码Url问题
如何在Android中编码一个url? 我用如下方法实现:final String encodedURL = URLEncoder.en
...面上表单提交(用get方法)为什么提交的中文在url中是以编码的形式出现的呢?
用form表单提交http://localhost:8080/BookShop/BookServlet?bo
传入是中文的.但是接受变成了url编码!
引用了system.web.
但是使用不了HttpUtility.UrlEncode此方法.求大神指点一下.
使用的是MVC6.0+.net
URL编码方法相关基础文章
...可能会与原来发生不一致。使用服务器端的 urlEncode函数编码的URL,与使用客户端javascript的encodeURI函数编码的URL,结果就不一样。javascript对文字进行编码涉及3 个函数: escape,encodeURI,enco
...ASCII字符;而Post支持整个ISO10646字符集。默认是用ISO-8859-1编码
6、Get是Form的默认方法。以下的比较非常非常使用:做 java的web开发有段日子了,有个问题老是困扰着我,就是乱码问题,基本上是网上查找解决方案(网上资
导语:由于历史原因,淘宝网的页面编码一直都是gbk,F2E手册中也有明确规范,刚开始的一段时间,F2E们并未遭遇太麻烦的乱码问题,大家相安无事,但随着淘宝的合作方越来越多,合作方的API接口编码可谓五花八门,淘宝的系...
...以访问到的,言外之意是说,URL不受国别、种族、语言、编码差异的约束,是编码无关的。然而我们常常在浏览器中敲入诸如“http://url/中文”的url,也能正确访问,既然url中包含中文,那么如何让其他国家那些没有中文编码的...
URL编码方法相关资料
1.配置文件web.config中 在节中加上整个网站的编码方式。
这样参数就以gb2312的中文编码方式传输了。而一般默认是utf-8. 2.在传参是先编码在传输,接受时先编码,在接收。 string mm=Server.URLEncode(你); Res
... + URL 中+号表示空格 %2B 2. 空格 URL中的空格可以用+号或者编码 %20 3. / 分隔目录和子目录 %2F 4. ? 分隔实际的 URL 和参数 %3F 5. % 指定特殊字符 %25 6. # 表示书签 %23 7. & URL 中
编码&解码 通过下图我们可以了解在javaWeb中有哪些地方有转码:
用户想服务器发送一个HTTP请求,需要编码的地方有url、cookie、parameter,经过编码后服务器接受HTTP请求,解析HTTP请求,然后对url、cookie、paramete
...可能会与原来发生不一致。使用服务器端的 urlEncode函数编码的URL,与使用客户端javascript的encodeURI函数编码的URL,结果就不一样。javascript对文字进行编码涉及3 个函数: escape,encodeURI,enco
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、Postgr...
阿里云针对移动应用推出的无线加速产品,旨在依托阿里云遍布全网的加速节点,海量带宽网络等优越的基础设施...
是阿里云安全专家基于阿里云多年安全最佳实践经验为云上用户提供的全方位安全技术和咨询服务,为云上用户建...怎么让浏览器地址栏正常显示 @字符,而不是 urlencode 后的 %40 这样? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
推荐学习书目
Python Sites
值得关注的项目
Python 编程
怎么让浏览器地址栏正常显示 @字符,而不是 urlencode 后的 %40 这样?
21:53:26 +08:00 · 4157 次点击
(文件环境: Python3, flask jinja2, 文件是 utf-8 编码)
我写了一个路由:
@.route('/@&username&', methods=['GET', 'POST'])
def user(username):
手工在浏览器里输入:
example.com/@username ,这样 @字符在新版的浏览器里都可以正常显示的。
但是,如果是从模板 Template 中渲染的链接 href=&{{ url_for('.user', username=username) }} , 点击链接在新页面的浏览器地址栏里,@字符就会被转码成 %40 。
这个怎么能让 url 依旧保持原来的编码啊?(虽然 @转成%40 功能不影响,但是 url 不优雅嘛 )
15 回复 &| &直到
11:37:41 +08:00
& & 22:02:25 +08:00 via iPhone
楼主是处女座?
& & 22:31:32 +08:00 via Android
“浏览器地址栏里,@字符就会被转码成 %40 。 ”我觉得没有办法不这样,除非你自己写一个浏览器。
& & 22:35:22 +08:00
Chrome 就可以啊
楼主你这个观察能力
& & 22:57:14 +08:00
没有发现 @变成%40
& & 01:56:18 +08:00
我感觉你们误解了 楼猪说了 新版浏览器手测有用 但是后端生成链接的时候 程序把它转码了 所以要解决程序生成的时候的问题
& & 06:51:16 +08:00
按照 RFC 3986, @ 符号是 reserved character ,进行 encode 是标准预期的行为。
& & 08:48:48 +08:00
@ 谢谢解释,你的理解完全正确。
& & 08:51:44 +08:00
建议可以看下
,在任何页面点击用户名,跳转的页面 url 里都是
这个原生格式,@字符并没有被转码。
& & 09:12:35 +08:00
这问题是你问的啊:
就 unquote 一个吧。不过回答你问题的人举的例子,在 href 里用未 encode 的 url 就算了,还在 redirect 里用,会不会出问题?
& & 09:15:20 +08:00
@ 你在地址栏手动输这类符号浏览器会自动 decode 。你在页面里点链接,如果 href 是未 encode 的,浏览器也会自动 decode
这类的浏览器指 firefox
& & 09:51:35 +08:00
@ 你太牛了! SO 上的问题都被你抄家了。。。
& & 09:58:17 +08:00
做的很好啊,不管什么浏览器,连 IE 都显示原生 href 字符,不会进行 url 转码( Urlencode )。
& & 10:39:48 +08:00
medium 可能是 js 处理的哦。。。
& & 10:56:32 +08:00
这是你渲染模板时就已经 urlencode 了吧,我记得 url_for 是会做 urlencode 的, 你再把 %40 replace 掉呗 (也很不优雅)。。
我只是好奇一下,你觉得 /@username 比 /username 好在哪里?
& & 11:37:41 +08:00
我看了 stackoverflow 上的问题才明白楼主问的是什么,楼主的英文表达强于中文。
& · & 2718 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 16ms · UTC 05:21 · PVG 13:21 · LAX 22:21 · JFK 01:21? Do have faith in what you're doing.

我要回帖

更多关于 浏览器自动转码 的文章

 

随机推荐