【求助】encodeURIComponent 中文 乱码问题

god1129 2015-10-17 09:38:38
这里有关于javascript 书签的介绍。
http://www.firefoxfan.com/firefox-aggregation/firefox-js-bookmarklet.html

论坛是gbk编码

javascript:title = document.title;url = window.location.href;window.open("http://www.discuz.net/forum.php?mod=post&action=newthread&fid=2"+"&typeid=1&subject="+encodeURIComponent(title)+"&message="+encodeURIComponent(title)+encodeURIComponent (url),"_blank");
把以上的代码收藏在浏览器的书签网址中,当访问网址http://d.wanfangdata.com.cn/Periodical/jxhg200504003时就可以实现填充部分表单,但是有乱码。(因为title是中文的)
discuz 测试账号 smiledz 123qweasd
乱码问题如何解决? 应该是这个论坛编码是gbk的问题,我的论坛也是gbk,也有这个问题.

...全文
792 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2015-10-20
  • 打赏
  • 举报
回复
你要是在浏览器地址栏或者控制台执行代码,你需要将gbk.js里面的文件全部放入控制台里面执行 不明白你这个书签是从哪里运行的,你自己的页面自己导入那个类库
god1129 2015-10-19
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
帮你将文件下载下来了 js对中文进行gb2312/gbk编码
<script type="text/javascript" src="/demo/gbk.js"></script>
<script>
var s='%D6%D0%B9%FA';//中国的gb312编码
alert(s);
s=$URL.decode(s);
alert(s);
s=$URL.encode(s);
alert(s);
</script>
辛苦版主了。gbk.js我已经传到我论坛了,得到了http://www.aaaaaaa.com/js.gbk.js (类似这样的路径) 但是下面的代码似乎没法用在浏览器书签中,请恕我愚钝,真的不明白,还请版主指点。 是不是要该写为类似下面这样的? 但是我不会。具体应该怎么在浏览器书签中使用呢?
javascript:(function(a,b,c,d){a[c]?a[c].ui.show():(d=b.createElement('script'),d.id='huaban_script',d.setAttribute('charset','utf-8'),d.src='https://huaban.com/js/widgets.min.js?'+Math.floor(+new Date/1e7),b.body.appendChild(d))})(window,document,'HUABAN_GLOBAL');
Go 旅城通票 2015-10-19
  • 打赏
  • 举报
回复
帮你将文件下载下来了 js对中文进行gb2312/gbk编码
god1129 2015-10-19
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
JavaScript使用的是Unicode编码,由于你用encodeURIComponent编码过(Unicode编码的),由于你的网址编码是gbk的,编码不一致,如果你服务端用$_GET获取由于编码不一致,所以中文会乱码。php不太熟悉,怎么编码转换你自己找下了 或者不需要php的$_GET,自己分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。 你可以看这篇文章:http://www.ruanyifeng.com/blog/2014/12/unicode.html,不适用encodeURIComponent,自己写个函数生成gbk的编码 see this:http://www.jb51.net/article/21686.htm
版主您好!
引用
使用js对中文进行gbk编码 http://blog.csdn.net/z69183787/article/details/8577508
这篇文章好像能解决我的问题,但是不知道如何操作,麻烦有空的时候指点下,好吗? 他这里有个gbk.js组件不知道怎么用,能直接放在浏览器书签中吗 或者 可以上传到我的discuz论坛 ftp上吗?
Go 旅城通票 2015-10-18
  • 打赏
  • 举报
回复
引用 2 楼 god1129 的回复:
[quote=引用 1 楼 showbo 的回复:] JavaScript使用的是Unicode编码,由于你用encodeURIComponent编码过(Unicode编码的),由于你的网址编码是gbk的,编码不一致,如果你服务端用$_GET获取由于编码不一致,所以中文会乱码。php不太熟悉,怎么编码转换你自己找下了 或者不需要php的$_GET,自己分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。 你可以看这篇文章:http://www.ruanyifeng.com/blog/2014/12/unicode.html,不适用encodeURIComponent,自己写个函数生成gbk的编码
感谢版主回复。 是的,如果是utf-8编码的discuz论坛,上面的javascript代码对于访问的网页title是中文没有问题,但是我的discuz论坛是gbk的,访问的网页title是中文就有问题了。 我自己的论坛php我可以控制,但是最好不更改论坛php程序,不知道能否直接修改上面的javascript代码达到效果呢?还是必须修改我自己的discuz 论坛php程序才行?(我的discuz论坛是gbk编码)
引用
分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。
以及
引用
自己写个函数生成gbk的编码
对javascript不懂,不知道如何操作。 希望有懂的朋友帮忙,谢谢大家! [/quote] see this:http://www.jb51.net/article/21686.htm
god1129 2015-10-18
  • 打赏
  • 举报
回复
研究了两三个小时,还是不太懂,总是不行。 请问是这么用吗? 我试了将中文的title手动转为gbk内码后放在window.open后面打开的链接中,是没有问题的,看来问题出在这个function函数了,是吗?
god1129 2015-10-18
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
[quote=引用 2 楼 god1129 的回复:] [quote=引用 1 楼 showbo 的回复:] JavaScript使用的是Unicode编码,由于你用encodeURIComponent编码过(Unicode编码的),由于你的网址编码是gbk的,编码不一致,如果你服务端用$_GET获取由于编码不一致,所以中文会乱码。php不太熟悉,怎么编码转换你自己找下了 或者不需要php的$_GET,自己分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。 你可以看这篇文章:http://www.ruanyifeng.com/blog/2014/12/unicode.html,不适用encodeURIComponent,自己写个函数生成gbk的编码
感谢版主回复。 是的,如果是utf-8编码的discuz论坛,上面的javascript代码对于访问的网页title是中文没有问题,但是我的discuz论坛是gbk的,访问的网页title是中文就有问题了。 我自己的论坛php我可以控制,但是最好不更改论坛php程序,不知道能否直接修改上面的javascript代码达到效果呢?还是必须修改我自己的discuz 论坛php程序才行?(我的discuz论坛是gbk编码)
引用
分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。
以及
引用
自己写个函数生成gbk的编码
对javascript不懂,不知道如何操作。 希望有懂的朋友帮忙,谢谢大家! [/quote] see this:http://www.jb51.net/article/21686.htm[/quote] 研究了两三个小时,还是不太懂,总是不行。 请问是这么用吗? 我试了将title手动转为gbk编码后放在window.open后面打开的链接中,是没有问题的,看来问题出在这个function函数了,是吗?

javascript:function encodeToGb2312(str){ 
var strOut=""; 
for(var i = 0; i < str.length; i++){ 
var c = str.charAt(i); 
var code = str.charCodeAt(i); 
if(c==" ") strOut +="+"; 
else if(code >= 19968 && code <= 40869){ 
index = code - 19968; 
strOut += "%" + z.substr(index*4,2) + "%" + z.substr(index*4+2,2); 
} 
else{ 
strOut += "%" + str.charCodeAt(i).toString(16); 
} 
} 
return strOut; 
} 
window.open("http://www.discuz.net/forum.php?mod=post&action=newthread&fid=2"+"&typeid=1"+"&message="+encodeToGb2312(document.title),"_blank");
god1129 2015-10-17
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
JavaScript使用的是Unicode编码,由于你用encodeURIComponent编码过(Unicode编码的),由于你的网址编码是gbk的,编码不一致,如果你服务端用$_GET获取由于编码不一致,所以中文会乱码。php不太熟悉,怎么编码转换你自己找下了 或者不需要php的$_GET,自己分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。 你可以看这篇文章:http://www.ruanyifeng.com/blog/2014/12/unicode.html,不适用encodeURIComponent,自己写个函数生成gbk的编码
感谢版主回复。 是的,如果是utf-8编码的discuz论坛,上面的javascript代码对于访问的网页title是中文没有问题,但是我的discuz论坛是gbk的,访问的网页title是中文就有问题了。 我自己的论坛php我可以控制,但是最好不更改论坛php程序,不知道能否直接修改上面的javascript代码达到效果呢?还是必须修改我自己的discuz 论坛php程序才行?(我的discuz论坛是gbk编码)
引用
分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。
以及
引用
自己写个函数生成gbk的编码
对javascript不懂,不知道如何操作。 希望有懂的朋友帮忙,谢谢大家!
Go 旅城通票 2015-10-17
  • 打赏
  • 举报
回复
JavaScript使用的是Unicode编码,由于你用encodeURIComponent编码过(Unicode编码的),由于你的网址编码是gbk的,编码不一致,如果你服务端用$_GET获取由于编码不一致,所以中文会乱码。php不太熟悉,怎么编码转换你自己找下了 或者不需要php的$_GET,自己分析location.search得到参数后使用decodeURIComponent进行解码,由于都是在js环境下,就不会乱码了,前提是你能控制那个php页面。 你可以看这篇文章:http://www.ruanyifeng.com/blog/2014/12/unicode.html,不适用encodeURIComponent,自己写个函数生成gbk的编码

87,886

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧