jsp页面通过js组合了一个url传道后台汉字都是问号?
发布网友
发布时间:2022-04-24 13:43
我来回答
共9个回答
懂视网
时间:2022-04-24 18:05
利用JavaScript通过URL方式向后台代码传值是一种经常用到的手段,但在传递汉字时经常会出现字符不全或变成乱码的问题,其原因是由于客户端IE浏览器的编码方式为GB2312(简体中文版WINDOWS的默认设置),而后台的C#代码使用utf8编码(创建WEB工程的默认配置)。
网上有很多方案解决该问题,如将web.config的编码方式改为GB2312、在客户端通过escape先编码再传,个心体会都不是很理想或有些特殊字符不支持。经过比较我决定使用encodeURIComponent在客户端进行编码,再传值,除了“/”不支持(但实际开发中很少需要传递该值,如果真有此请况,再加一层判断即可。
encodeURIComponent的帮助文档如下:
encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
encodeURIComponent( encodedURIString )
必选的 encodedURIString 参数代表一个已编码的 URI 组件。
说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent ,那么将返回初始的字符串。因为encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html ,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
要求
版本 5.5
请参阅
decodeURI 方法 | decodeURIComponent 方法
应用于: Global 对象
我做了一个小例子来展现该效果
Default.aspx代码:
代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
无标题页
热心网友
时间:2022-04-24 16:31
对于URL中的汉字和特殊字符应该用encodeURIComponent进行编码后传递。
例如: test.html?name=张三 应该使用如下方法:
var url="test.html?name="+encodeURIComponent("张三");
热心网友
时间:2022-04-24 18:05
数据库里取出来的数据吗?
在JSP执行之前加上
request.setCharacterEncoding(“UTF-8”);
试试。
content="text/html; charset=UTF-8"、pageEncoding="UTF-8"
这个定义的是显示。
输入的定义用: request.setCharacterEncoding(“UTF-8”);
热心网友
时间:2022-04-24 19:57
url传汉字的话,需要编码,在页面中组合的时候url+encodeURI(汉字),在服务端解码是用
String param1=java.net.URI.decode(request.getParameter("参数名"));应该就可以了
热心网友
时间:2022-04-24 22:05
用js写的跳转路径默认为get的,get不能传中文,所以到后台中文是乱码
热心网友
时间:2022-04-25 00:29
把你要传的url,用 encodeURI("要传的字符串")方法,过一下试试。
热心网友
时间:2022-04-25 03:11
建议你 request.setCharacterEncoding("gbk");
将所有的Encoding都设置成 gbk 吧
热心网友
时间:2022-04-25 06:09
三楼老兄的不错 不过jsp上如果是用js操作 在js方法中也要转换下