js在发送url请求带中文时会有乱码问题:
例如 var url="....do?method=init&name='中文'";
处理的方法是 对中文进行二次转码 encodeURI(encodeURI('中文')) 而我们通常只做一次转码发现还是不对。只能叹没有办法。
在接收方进行一次解码:
java.net.URLDecoder static String decode(String s, String enc)
s 为接收的字符串 enc 为要转的编码 utf-8 等
http://wjt276.iteye.com/blog/455111 写道
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
如果不使用转义字符,这些编码就会当URL中定义的特殊字符处理。
下表中列出了一些URL特殊符号及编码 十六进制值
1.+ URL 中+号表示空格 %2B
2.空格 URL中的空格可以用+号或者编码 %20
3./ 分隔目录和子目录 %2F
4.? 分隔实际的 URL 和参数 %3F
5.% 指定特殊字符 %25
6.# 表示书签 %23
7.& URL 中指定的参数间的分隔符 %26
8.= URL 中指定参数的值 %3D
其他信息:
js
对文字进行编码涉及
3
个函数的区别
:
escape()
方法采用
ISO Latin
字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非
ASCII
字符都将被转化成
%xx
格式的字符编码(
xx
等于该字符在字符集表里面的编码的
16
进制数字)。比如,空格符对应的编码是
%20
。
unescape
方法与此相反。不会被此方法编码的字符:
@ * / +.
总体上来说
escape
不编码字符有
69
个:
*
,
+
,
-
,
.
,
/
,
@
,
_
,
0-9
,
a-z
,
A-Z
encodeURI()
方法:把
URI
字符串采用
UTF-8
编码格式转化成
escape
格式的字符串。
encodeURI
不编码字符有
82
个:
!
,
#
,
$
,
&
,
'
,
(
,
)
,
*
,
+
,
,
,
-
,
.
,
/
,
:
,
;
,
=
,
?
,
@
,
_
,
~
,
0-9
,
a-z
,
A-Z
encodeURIComponent()
方法:把
URI
字符串采用
UTF-8
编码格式转化成
escape
格式的字符串。与
encodeURI()
相比,
这个方法将对更多的字符进行编码,比如
/
等字符。所以如果字符串里面包含了
URI
的几个部分的话,不能用这个方法来进行编码,否则
/
字符被编码之后
URL
将显示错误。
不会被此方法编码的字符:
!
,
'
,
(
,
)
,
*
,
-
,
.
,
_
,
~
,
0-9
,
a-z
,
A-Z
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成
UTF-8格式的(比如原页面和目标页面的
charset是一致的时候),只需要使用
escape。如果你的页面是
GB2312或者其他的编码,而接受参数的页面是
UTF-8编码的,就要采用
encodeURI或者
encodeURIComponent。
在服务器端得到传入的参数后,可以用如下方法解码出来:
用java.net.URLDecoder类的decode(String s, String enc)方法,第一个参数是要解码的字符串,第二个参数指定解码时用的编码。
分享到:
相关推荐
**JS DOM操作备忘** 在JavaScript中,DOM(Document Object Model)是HTML和XML文档的结构化表示,它提供了一种标准的方式来访问和修改页面内容。这篇备忘将深入探讨如何利用JavaScript进行DOM操作,包括选择元素、...
3. 客户端(Caretaker):负责管理备忘录,但只对备忘录进行存储和传递,不直接访问备忘录的内容,以防止破坏原始对象的封装性。 备忘录模式的实现方式有两种: - 浅拷贝:只复制原始对象的部分状态,适合于对象...
本文档是一个非常实用的JavaScript备忘册,旨在帮助开发者快速找到并使用那些经常使用的JavaScript语句,避免在需要时进行大量的搜索。 首先,我们来看`isLegalString`函数。这是一个用于验证字符串中的每个字符...
1. **代码结构**:查看项目的目录结构,理解各文件的作用,如`app.js`是全局配置,`app.wxss`是全局样式,各页面的`.wxml`、`.wxss`、`.js`、`.json`文件分别对应视图、样式、逻辑和配置。 2. **组件使用**:分析...
可以使用`<view>`、`<text>`组件显示文字,`<image>`组件展示图片,通过`data`属性传递日记数据。 5. **注册与登录**:微信小程序提供了一套完整的用户身份验证机制,包括获取微信用户信息、登录状态维护(`wx....
当需要在新窗口中加载页面并传递参数时,可以使用JavaScript的`window.open()`函数。在服务器端,可以使用`Response.Write`将JavaScript代码写入页面,例如: ``` response.write("<script>window.open('Page....
另一个文件“JSP漂亮的界面控件”可能是包含了一些预设的JSP组件库,如自定义的CSS样式、JavaScript插件等,用于增强备忘录系统界面的视觉效果和交互性。 在实际的开发过程中,SSH框架的使用方式如下: 1. **...
3. **函数**:理解函数的定义、参数传递、返回值,以及函数表达式(匿名函数、箭头函数)。 4. **对象和原型**:JavaScript的面向对象编程基于原型,了解如何创建对象、原型链、原型方法以及构造函数。 5. **数组*...
总的来说,这个备忘录系统的设计与实现,涉及到Web开发的多个核心知识点,包括前端的HTML/CSS/JavaScript,后端的Java编程,数据库设计,以及服务器端的Servlet和JDBC技术。通过这样的项目实践,学生可以全面地理解...
Vue.js作为一款轻量级的JavaScript框架,因其易学易用、组件化开发、高效的更新机制等特点,在现代Web开发中备受青睐。本项目是基于Vue.js实现的一个年历功能,特别适合用于考勤管理和备忘录的场景。 首先,我们要...
【Vue.js备忘录应用详解】 Vue.js是一个轻量级的前端JavaScript框架,以其易学易用、灵活性高和性能优异的特点,在Web开发领域中深受开发者喜爱。在"基于Vue的备忘录"项目中,我们将探讨如何利用Vue.js构建一个功能...
通过`wx.navigateTo`、`wx.redirectTo`等API,可以在备忘录的不同页面间导航,并传递数据。 8. **真机调试与预览** 开发过程中,可以使用微信开发者工具进行模拟器测试,也可以通过扫码在真机上预览效果,确保在...
前端开发者主要负责实现用户界面,与用户进行交互,并将数据从服务器传递到用户浏览器。这个“前端备忘标签”可能是一个整理了前端开发关键知识点的资源集合,包括HTML、CSS、JavaScript等核心技术,以及相关的框架...
**MooTools 1.2 AJAX 使用备忘** MooTools 是一个轻量级的JavaScript框架,它提供了许多实用的功能,包括对AJAX(异步JavaScript和XML)的支持。在MooTools 1.2 版本中,AJAX功能得到了进一步的优化,使得开发者...
JavaScript有CommonJS(Node.js)、AMD(RequireJS)和ES6模块等多种模块系统。 8. **异步编程**:对于与服务器的通信,`fetch` API或旧式的XMLHttpRequest(XHR)用于发送HTTP请求。Promise和async/await语法可以...
Vue.js 是一个流行的轻量级JavaScript框架,专为构建用户界面而设计,尤其适用于单页应用(SPA)。Vue.js 的核心特性包括数据绑定、组件化、指令系统和生命周期管理,使其易于学习且易于上手。"vue-extended-cheat...
JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的轻量级编程语言。它与HTML和CSS一起,构成了web开发的三大核心技术。本备忘单是个人为了记录和整理JavaScript中的一些实用技巧和常见功能而创建的,旨在...
备忘录,正如其名,是一个专注于实现这一功能的项目,它是一个基于命令行界面(CLI)的加密消息传递系统,且正处于开发阶段。在这个系统中,JavaScript作为主要编程语言被用来构建和实现其核心功能。 在分布式环境...
Controller通常会使用@Service注解的服务层对象来处理业务,并使用模型对象(@ModelAttribute)传递数据到视图。例如: ```java @Controller @RequestMapping("/example") public class ExampleController { @...
在这个过程中,事件首先被最顶级的元素(通常是document)捕获,然后逐级向下传递,最后到达触发事件的元素。这种机制使得在元素的父级或祖先级处理事件成为可能,即使事件源在子元素上。 在IE浏览器中,`...