`

JS传递中文备忘

阅读更多

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操作备忘

    **JS DOM操作备忘** 在JavaScript中,DOM(Document Object Model)是HTML和XML文档的结构化表示,它提供了一种标准的方式来访问和修改页面内容。这篇备忘将深入探讨如何利用JavaScript进行DOM操作,包括选择元素、...

    设计模式之备忘录模式(Memento Pattern)

    3. 客户端(Caretaker):负责管理备忘录,但只对备忘录进行存储和传递,不直接访问备忘录的内容,以防止破坏原始对象的封装性。 备忘录模式的实现方式有两种: - 浅拷贝:只复制原始对象的部分状态,适合于对象...

    常用javascript备忘册

    本文档是一个非常实用的JavaScript备忘册,旨在帮助开发者快速找到并使用那些经常使用的JavaScript语句,避免在需要时进行大量的搜索。 首先,我们来看`isLegalString`函数。这是一个用于验证字符串中的每个字符...

    备忘录.zip小程序精选源码

    1. **代码结构**:查看项目的目录结构,理解各文件的作用,如`app.js`是全局配置,`app.wxss`是全局样式,各页面的`.wxml`、`.wxss`、`.js`、`.json`文件分别对应视图、样式、逻辑和配置。 2. **组件使用**:分析...

    微信小程序备忘录

    可以使用`<view>`、`<text>`组件显示文字,`<image>`组件展示图片,通过`data`属性传递日记数据。 5. **注册与登录**:微信小程序提供了一套完整的用户身份验证机制,包括获取微信用户信息、登录状态维护(`wx....

    ASP.NET动态网页制作初学者备忘录.doc

    当需要在新窗口中加载页面并传递参数时,可以使用JavaScript的`window.open()`函数。在服务器端,可以使用`Response.Write`将JavaScript代码写入页面,例如: ``` response.write("<script>window.open('Page....

    大学 毕业设计 项目实训 个人备忘录系统(java SSH网站源代码)+JSP漂亮的界面控件.zip

    另一个文件“JSP漂亮的界面控件”可能是包含了一些预设的JSP组件库,如自定义的CSS样式、JavaScript插件等,用于增强备忘录系统界面的视觉效果和交互性。 在实际的开发过程中,SSH框架的使用方式如下: 1. **...

    javascript学习网址备忘

    3. **函数**:理解函数的定义、参数传递、返回值,以及函数表达式(匿名函数、箭头函数)。 4. **对象和原型**:JavaScript的面向对象编程基于原型,了解如何创建对象、原型链、原型方法以及构造函数。 5. **数组*...

    jsp大作业 备忘录系统的的设计与实现.docx

    总的来说,这个备忘录系统的设计与实现,涉及到Web开发的多个核心知识点,包括前端的HTML/CSS/JavaScript,后端的Java编程,数据库设计,以及服务器端的Servlet和JDBC技术。通过这样的项目实践,学生可以全面地理解...

    Vue实现的年历(适用于考勤,备忘)

    Vue.js作为一款轻量级的JavaScript框架,因其易学易用、组件化开发、高效的更新机制等特点,在现代Web开发中备受青睐。本项目是基于Vue.js实现的一个年历功能,特别适合用于考勤管理和备忘录的场景。 首先,我们要...

    基于vue的备忘录

    【Vue.js备忘录应用详解】 Vue.js是一个轻量级的前端JavaScript框架,以其易学易用、灵活性高和性能优异的特点,在Web开发领域中深受开发者喜爱。在"基于Vue的备忘录"项目中,我们将探讨如何利用Vue.js构建一个功能...

    微信小程序推荐demo:备忘录:适用1028版本.rar

    通过`wx.navigateTo`、`wx.redirectTo`等API,可以在备忘录的不同页面间导航,并传递数据。 8. **真机调试与预览** 开发过程中,可以使用微信开发者工具进行模拟器测试,也可以通过扫码在真机上预览效果,确保在...

    前端备忘标签

    前端开发者主要负责实现用户界面,与用户进行交互,并将数据从服务器传递到用户浏览器。这个“前端备忘标签”可能是一个整理了前端开发关键知识点的资源集合,包括HTML、CSS、JavaScript等核心技术,以及相关的框架...

    mootools 1.2 ajax使用备忘

    **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-extended-cheatsheet:关于JavaScript框架Vue.js的“扩展备忘单”

    Vue.js 是一个流行的轻量级JavaScript框架,专为构建用户界面而设计,尤其适用于单页应用(SPA)。Vue.js 的核心特性包括数据绑定、组件化、指令系统和生命周期管理,使其易于学习且易于上手。"vue-extended-cheat...

    Javascript-Simple-Cheat-Sheet:只是我的个人备忘单上的一些很酷的JS东西

    JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的轻量级编程语言。它与HTML和CSS一起,构成了web开发的三大核心技术。本备忘单是个人为了记录和整理JavaScript中的一些实用技巧和常见功能而创建的,旨在...

    memo:分布式消息传递系统

    备忘录,正如其名,是一个专注于实现这一功能的项目,它是一个基于命令行界面(CLI)的加密消息传递系统,且正处于开发阶段。在这个系统中,JavaScript作为主要编程语言被用来构建和实现其核心功能。 在分布式环境...

    SpringMVC项目搭建过程备忘

    Controller通常会使用@Service注解的服务层对象来处理业务,并使用模型对象(@ModelAttribute)传递数据到视图。例如: ```java @Controller @RequestMapping("/example") public class ExampleController { @...

    Javascript 事件捕获的备忘(setCapture,captureEvents)

    在这个过程中,事件首先被最顶级的元素(通常是document)捕获,然后逐级向下传递,最后到达触发事件的元素。这种机制使得在元素的父级或祖先级处理事件成为可能,即使事件源在子元素上。 在IE浏览器中,`...

Global site tag (gtag.js) - Google Analytics