在客户输入信息时会有特殊符号,这个时候如果页面之间传值或页面之间的跳转时会有数据丢失的情况发。因为URL只能使用阿拉伯数字、英文字母[0-9a-zA-Z]可以不经过编码直接用于URL。如果URL中有汉字,就必须编码后使用,这是交给应用程序(浏览器)自己决定。这导致“URL编码”成为了一个混乱的领域。
现在主要使用两种编码方式encodeURIComponent()和encodeURI
两种的区别:
1.encodeURIComponent()只对URL中的部分进行,而不对整个URL编码。如北京市#和平区,encodeURIComponent(str),对“; / ? : @ & = + $ , #”进行编码,解码为decodeURIComponent()
2.encodeURI()是对整个URL编码,对应的解码是decodeURI()。特殊含义的符号“; / ? : @ & = + $ , #”,不进行编码,输出形式是utf-8。
而我的项目中出现的问题就是输入中有特殊符号使用encodeURIComponent()可以解决。
另外在设计页面之间传值的时候也要考虑Get和Post的设计,如果传值超过规定的长度,最好使用Post方式(这时要考虑真实场景中客户的使用方式)
当然主要的原因还是当前项目中使用了GBK的编码格式,所以定义编码格式的时候最好使用utf-8
所以使用GBK的时候要使用如下方法进行代码转换
function encodeUrlForGBK(str) {
var regexs = new Array(
new RegExp(',', 'g'),
new RegExp('/','g'),
new RegExp('\\?', 'g'),
new RegExp(':', 'g'),
new RegExp('@', 'g'),
new RegExp('&', 'g'),
new RegExp('=', 'g'),
new RegExp('\\+', 'g'),
new RegExp('\\$', 'g'),
new RegExp('#', 'g')
);
var replaces = new Array('%2C', '%2F','%3F', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%23');
for (var i = 0; i < regexs.length; i++) {
str = str.replace(regexs[i], replaces[i]);
}
return str;
}
分享到:
相关推荐
总之,Struts 2 中处理中文汉字传值的关键在于理解和正确使用字符编码,包括设置页面编码、响应编码、URL编码和Action中的解码步骤。确保每个环节都与UTF-8编码兼容,可以避免中文字符的乱码问题。在实际开发中,还...
let urlValue = encodeURIComponent("包含空格和特殊字符的字符串"); ``` 2. **正确解码**:在后端,使用对应的解码函数,如在JavaScript中使用`decodeURIComponent()`: ```javascript let decodedValue = ...
5. 注意事项:虽然上述方法可以解决字符串中特殊字符的转义问题,但在处理JSON数据时,还要注意JSON数据的格式和结构。例如,确保所有的键值对都正确地用双引号括起来,确保所有字符串值都使用反斜杠对双引号进行...
首先,使用Response对象的Write方法可以将字符串输出到客户端页面上。在这里,我们可以输出一段JavaScript代码来控制页面行为。第一种方法就是直接使用window.close()方法来尝试关闭当前窗口。但这种方法有一个问题...
Java 页面URL传值中文乱码问题通常出现在前端Ajax请求中,当URL参数包含中文字符时,服务器端通过`request.getParameter()`获取参数时,可能会出现乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符...
例如,可以使用`encodeURIComponent()`函数,这个函数会将URL中的特殊字符转换为它们的百分号编码。在给出的示例中,我们看到一个`onclick`事件处理程序,它在用户点击链接时调用`test`函数,将参数`a`和`b`编码后...
这个函数会将特殊字符转换为 `%xx` 形式的百分号编码,但不会对字母、数字、`-`、`_`、`.` 和 `~` 进行编码。由于中文字符不在这些不受影响的字符范围内,因此在传递中文参数时需要使用它。 2. **双层编码**: - ...
总之,当处理URL中的特殊字符时,正确的编码是关键。使用JavaScript的`escape()`或`encodeURIComponent()`函数对参数进行编码,确保它们能够安全地通过URL传递给服务器,然后在服务器端使用相应的解码函数(如PHP的`...
- 数据类型转换是必要的,因为用户输入通常是字符串,需要转换为整数或浮点数进行计算。 - 使用`request.setAttribute()`和`request.getRequestDispatcher()`在Servlet之间传递数据。 2. **单网页的传值接收**:...
在使用Struts2框架进行Web开发时,经常需要在前端页面和后端Java代码之间进行数据传输,尤其是涉及到JSON格式的传值。由于中文字符在UTF-8编码和ISO-8859-1编码之间的转换差异,很容易在数据传输过程中出现乱码问题...
这里展示了一个简单的示例,通过`alert`弹窗显示了子窗口返回的URL字符串。 #### 四、注意事项 - 使用`window.showModalDialog()`时需要注意兼容性问题,因为这个API已经被废弃。现代浏览器可能会不支持或者禁用它...
这里,我们先假设服务器接收到的字符串是ISO-8859-1编码的,然后将其转换为UTF-8编码,因为UTF-8是处理中文字符的常用编码格式。这样,"小甜甜"就能被正确地解码出来。 尽管上述方法通常能解决大部分乱码问题,但...
在处理前端开发中页面间的URL传值时,我们经常会使用jQuery.query.js这样的JavaScript库来解析URL中的查询字符串。这个库允许开发者方便地从URL中获取参数值,但在使用过程中可能会遇到一些问题。本文将针对使用...
每个节点都可以是简单的值(如字符串、数字等),也可以是更复杂的结构,如列表或哈希表。 - **示例**:书中给出的例子展示了如何通过树形结构来组织不同的数据,如动物和水果。这种结构便于管理和查询数据。 ``` ...
这样,编码时的操作被逆向执行,最终得到的字符串才会是正确的原始中文字符串。在Java语言中,解码操作可以使用以下代码实现: ```java String key = URLDecoder.decode(URLDecoder.decode(q, "UTF-8"), "UTF-8"); ...
7. **ES6及新特性**:ECMAScript 6(简称ES6)引入了许多新的语法特性,如类(`class`),模块(`import`和`export`),解构赋值,模板字符串,箭头函数等。这些特性使得JavaScript更易读、更易写,也是现代...