kogo
小狐狸
小狐狸
  • UID23141
  • 注册日期2008-03-06
  • 最后登录2008-03-06
  • 发帖数3
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:4249回复:8

请问Firefox地址栏是的URL是使用的什么编码?在页面中如何用Javascript 解码?

楼主#
更多 发布于:2008-03-06 18:31
大家好,我今天遇到一个问题,就是在URL参数中带有特殊字符时,FF会自动进行编码,可是我不知道它用的是什么格式,所以无法解析为原来的字符,希望大家帮我看一下怎么解决。

我在FF地址栏中输入这个URL:http://localhost:8080/index.html?Title=Lösungen

FF会自动解析成这个:http://localhost:8080/index.html?Title=L%810%8B2sungen

我想在页面中用Javascript 把“L%810%8B2sungen” 还原成“Lösungen”, 但是不知道用什么函数。
我试了decodeURI 和 decodeURIComponent, 都不行。
unescape 会把它转成 "L02sungen".

我在网上找了半天了,也没有找到有用的信息。还是希望大家帮我一下, 谢谢了!
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
1楼#
发布于:2008-03-06 18:31
javascript好像只能做unicode编码的转换。
用escape转换Lösungen 的编码是L%F6sungen,

我这里地址栏解析的是
http://localhost:8080/index.html?Title=L%C3%B6sungen,你那里转换的编码不知道是哪个字符集的。
kogo
小狐狸
小狐狸
  • UID23141
  • 注册日期2008-03-06
  • 最后登录2008-03-06
  • 发帖数3
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2008-03-06 18:31
我的Firefox是中文版,这个有关系吗?
操作系统是windows XP SP2
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
3楼#
发布于:2008-03-06 18:31
我所知也不多, 听说是把中文字符放在gbk编码的页面的form里submit,就能转换成gbk的编码, 但我从来没有实验过。

实际上, 把特殊字符转换成非utf-8编码,或者逆转回来,也是我遇到的难题, 我还没有想到用javascript解决的办法。
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-06-03
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
4楼#
发布于:2008-03-06 18:31
kogo 和 wushi777 两人的 about:config network.standard-url.encode-utf8 不同
前者为默认,false;后者为 true
所以
前者转换为 gbk 编码
后者为 utf8 编码
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-06-03
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
5楼#
发布于:2008-03-06 18:31
escape('Lösungen') ->  L%F6sungen
encodeURIComponent('Lösungen') -> L%C3%B6sungen
encodeURI('Lösungen') -> L%C3%B6sungen

没有找到能转换GBK encode 的函数。要不自己写一个?
kogo
小狐狸
小狐狸
  • UID23141
  • 注册日期2008-03-06
  • 最后登录2008-03-06
  • 发帖数3
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2008-03-06 18:31
多谢版主 fiag 的指点,我把about:config network.standard-url.encode-utf8 设为true 就好使了。 firefox 就可以编码成这样了: http://localhost:8080/index.html?Title=L%C3%B6sungen
然后我用decodeURI()就可以把它解码成原字符了。

同时也非常感谢wushi777的热心帮助。
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-06-03
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
7楼#
发布于:2008-03-06 18:31
不过汉字
%A2%E3 => 0xA2E3
%81{ => 0x817B

%810%8B2 跟上面的不一样啊,要长些……
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
8楼#
发布于:2008-03-06 18:31
fiag:不过汉字
%A2%E3 => 0xA2E3
%81{ => 0x817B

%810%8B2 跟上面的不一样啊,要长些……
回到原帖


他那个肯定不是gbk的。那个单词在德语里是密码的意思,所以默认转换也应该是德语的字符集吧。
游客

返回顶部