ajax提交到servelt获取参数有乱码的解决方法

在这里,假设读者了解基本的

ajax

技术或更多。我仅仅阐述一个现象,一个解决方法;原因、

原理,同样不清楚

……

我们先从简单的着手,

servlet传值到JSP页面js

脚本中,利用脚本将相关值显示在页面。解决这个方向(servlet——javascript)的中文乱码问题很简单。只需要在

servlet中,添加一个

编码设置:


代码如下:

response.setContentType("text/html;charset=UTF-8");

而且JSP页面编码方式可以随意设定,GBK、GB2312、UTF-8,当然

ISO-8859-1是不行的,至少你要在页面显示中文。

从js脚本传中文到servlet,问题因xmlHttp对象open()方法中,传值方式(GET、POST)不同,而分为两种情况:

在介绍这个问题之前,先将两种传值方式区别展示一下:

假设传递值“软件工程”,变量名为“selcol”。

1、GET方法:


代码如下:

function selectCol(){

createXMLHttpRequest();

var selcol = "

软件工程


代码如下:

";

var url = "/emp/FindSpecial?selcol=" + selcol;

xmlHttp.onreadystatechange = handleStateChange;

xmlHttp.open("GET",url,true);

xmlHttp.send(null);

}

2、POST方法:


代码如下:

function selectCol(){

createXMLHttpRequest();

var selcol = "selcol=软件工程";

var url = "/emp/FindSpecial";

xmlHttp.onreadystatechange = handleStateChange;

xmlHttp.open("POST",url,true);

xmlHttpxmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlHttp.send(selcol);

}

如果使用GET方式传递,那么我们在servlet拿值的时候,以如下方式转编码:


代码如下:

String selcol = new String(request.getParameter("selcol").getBytes("ISO-8859-1"), "GBK");

转GBK、GB2312都行,转UTF-8不行!

这个时候也许你会很奇怪的发现,这两个语句竟然同时出现:


代码如下:

response.setContentType("text/html;charset=UTF-8");
String selcol = new String(request.getParameter("selcol").getBytes("ISO-8859-1"), "GBK");

个人是这样理解的:第一句仅保证,从此servlet传递出去的数据编码方式为UTF-8;

而后者则是将传递进来的数据转化成GBK编码的数据。方便与辨别和处理。

如果使用POST方式传递,那么我们在servlet拿值的时候,同上,只是将编码转为UTF-8,

而这个时候,GBK和GB2312不行!


代码如下:

String selcol = new String(request.getParameter("selcol").getBytes ("ISO-8859-1"), "UTF-8");

(0)

相关推荐

  • java读写oracle的blob字段示例

    复制代码 代码如下: package com.wanmei.meishu; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.InputStream;import java.io.OutputStream;import java.sql.Connection;import java.sql.DriverManager;import java

  • java调用oracle分页存储过程示例

    1.分页类 复制代码 代码如下: package org.zh.basic; /** * 页面类 *  * @author keven *  */public class PageInfo { // 定义    private String p_tableName; // -表名    private String p_strWhere; // --查询条件    private String p_orderColumn; // --排序的列    private String p_orderS

  • java使用jdbc链接Oracle示例类分享

    复制代码 代码如下: public class OracleJdbcTest   {       String driverClass = "oracle.jdbc.driver.OracleDriver"; Connection con; public void init(FileInputStream fs) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException       {

  • Java实现JSP在Servelt中连接Oracle数据库的方法

    本文实例讲述了Java实现JSP使用Servelt连接Oracle数据库的方法.为了实现在Servlet 中连接数据库,必须编写Servlet 的类程序.将Servlet 类程序放到WEB 服务器的servlets 或者classes 目录下面,为调用Servlet,需要创建发送Servlet 请求的HTML 文档.本例通过(Driver)Class.forName(driverName).newInstance()方法来实现加载驱动程序,建立与数据库连接. 具体程序代码为: 1.Databas

  • Java使用JDBC连接Oracle_MSSQL实例代码

    一.Statement 复制代码 代码如下: import java.sql.*; public class TestJDBC { public static void main(String[] args) {  Connection oracle_conn = null;  Statement oracle_stmt = null;  ResultSet oracle_rs = null; Connection mssql_conn = null;  Statement mssql_stmt

  • java操作oracle数据库示例

    最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径->配置构建路径,选择第三项"库",然后点击"添加外部Jar",选择"D:\Oracle\app\oracle\product\11.2.0\server \jdbc\lib\ojdbc6_g.jar"(注:D:\Oracle为数据库的安装路径). 2.以下代码为非常标准的Oracle数据库连接代码示例: 复制代码 代码如下: /** * 一个非

  • JSP连接MySql/MS SQL Server/Oracle数据库连接方法[整理]

    JSP连接MySql数据库方法 首先先将MySql的数据库连接驱动拷贝到Tomcat/common/lib包下 下载mysql-connector-java-5.1.6.zip http://mysql.cs.pu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.1.6.zip 配置Tomcat的虚拟目录-略 创建jdbcMySql.jsp页面 页面代码如下: 复制代码 代码如下: <%@ page contentType="text

  • 在JSP中访问Oracle数据库

    写第一个连接Oracle的JSP程序test.jsp1.连入SQL*Plus以system/manager用户登录,SQL> conn system/manager创建新的用户:如user1/pass1,赋予connect,resource权限.SQL> grant connect,resource to user1 identified by pass1;SQL> conn user1/pass1SQL> create table test(a number,b char(10)

  • JAVA简单链接Oracle数据库 注册和登陆功能的实现代码

    复制代码 代码如下: //User 用户的基本信息,也是USERINFO表中的3个列package 登陆判断; public class User { private String name;  private String loginname;  private String loginpsw;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;

  • ajax提交到servelt获取参数有乱码的解决方法

    在这里,假设读者了解基本的 ajax 技术或更多.我仅仅阐述一个现象,一个解决方法:原因. 原理,同样不清楚 -- 我们先从简单的着手, servlet传值到JSP页面js 脚本中,利用脚本将相关值显示在页面.解决这个方向(servlet--javascript)的中文乱码问题很简单.只需要在 servlet中,添加一个 编码设置: 复制代码 代码如下: response.setContentType("text/html;charset=UTF-8"); 而且JSP页面编码方式可以随

  • 使用AJAX实现UTF8编码表单提交到GBK编码脚本无乱码的解决方法

    1.表单项目1 GBK编码格式 用户采集单是GBK编码,通过GET/POST提交上来的数据也是GBK格式,无需做任何处理 测试源码 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="GB2312"> </head> <body> <li><a href="gbkForm.html" rel=&

  • asp.net URL中包含中文参数造成乱码的解决方法

    问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:http://www.****.com/user.aspx?id=水天,就出现大问题了: 1.从IE地址栏中直接输入这个地址,访问没错: 2.做一个静态页,其中包括这个超链接,点击访问也没错: 3.就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码. 一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码传递是不会有问题的

  • JQuery的Ajax中Post方法传递中文出现乱码的解决方法

    本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法.分享给大家供大家参考.具体分析如下: 问题一: 今天在做项目时,需要用到Ajax,之前我在用GET方式传递中文参数时,只需要在后台程序中设置页面编码为GB2312即中文能正常显示,可是这次由于表单项目较多,不适合用GET方式传递,只能用POST方式,但发现后台程序中设置编码为GB2312时中文还是显示的乱码.经过一番研究问题才最终得到解决. 解决方法: 解决此问题的

  • Egg.js 中 AJax 上传文件获取参数的方法

    依赖 formidable 代码 前端 <fieldset style="margin: 20px; padding: 20px;"> <legend>单文件,Ajax</legend> <form id="form3"> <div> <input type="text" id="customName" placeholder="自定义文件名"

  • java表单提交中文乱码的解决方法

    本文实例为大家分享了java表单提交中文乱码的解决方法,供大家参考,具体内容如下 主页index.xml <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>servlet演示</title> </head> <body> <h2&

  • TinyMCE提交AjaxForm获取不到数据的解决方法

    本文实例分析了TinyMCE提交AjaxForm获取不到数据的解决方法.分享给大家供大家参考.具体分析如下: 在没有使用AjaxForm前,我做的一个小小的评论提交的Web form,评论内容使用了TinyMCE做文本编辑.为了增加一点点的用户体验,就顺手拿AjaxForm来实现Ajax提交.可是发现出现了一个意外的事情.就是每次提交,第一次提交时,AjaxForm会无法获得当前编辑的评论内容,即TextArea里面的内容,要再点击一次提交,才能将TextArea的内容提交上去. 关键是Tiny

  • PHP采用get获取url汉字出现乱码的解决方法

    本文实例讲述了PHP采用get获取url汉字出现乱码的解决方法.分享给大家供大家参考.具体方法如下: 一.问题: 本来打算这样使用 复制代码 代码如下: <a href="list.php?plate=辖区动态" charset="utf-8" target="main">[查看辖区动态]</a> 结果在list.php页面得到的是-–查看[辖区动怿] 一开始猜想可能是汉字的"态"这个编码和某些东西冲突

  • jQuery ajax方法传递中文时出现中文乱码的解决方法

    本文实例讲述了jQuery ajax方法传递中文时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 使用jQuery的ajax方法,在传递中文时出现中文乱码,按照以前的方法,修改了jquery文件中的ajaxSetting也不好使 复制代码 代码如下: sajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charse

  • JS传值出现中文参数乱码的解决方法

    本文实例讲述了JS传值出现中文参数乱码的解决方法.分享给大家供大家参考,具体如下: function PopupFK(cNum,type){ var url = "contract!Paying.action"; url = url + "?contract.contractNum="+cNum+"&payingType="+type; // if(isEmpty($(_this).attr("payId"))){ /

随机推荐