ajax中url赋json格式的值时发生中文乱码的相关问题
具体流程:转入到jsp界面时会加载ajax,ajax转到url时传带hide在jsp界面的值titleString,其来源见下面的代码。
String title=new String("\"日志模块访问统计分析图\"");
String subtitle=new String("\""+df.format(startDateTemp).toString()+" 至 "+df.format(endDateTemp).toString()+"各模块访问饼状图"+"\"");
titleMap.put("title", title);
titleMap.put("subtitle", subtitle);
yString=yAxisMap.toString();
titleString=titleMap.toString();
此处,在加中文字符串时必须要用\"引号的转义字符串括起,其格式应该如下:{title="日志模块访问统计分析图", subtitle="当日服务器及各模块访问折线图"},而不是{title=日志模块访问统计分析图, subtitle=当日服务器及各模块访问折线图}
$(function(){
$.ajax({
type: 'POST',
dataType: 'JSON',
url: "logStatistic/statisticLog.action?titleString="+$("#titleString").val(),
success : function(result){
}
});
});
ajax进入action中时,需用request.getParameter("titleString")取到titleString,然后titleString.getBytes("iso-8859-1"), "UTF-8")进行编码处理。此处可以看出前台界面的编码方式。但是,在jsp界面中,我已用pageEncoding="UTF-8"确定,为什么此处要为iso-8859-1?我用谷歌F12观察前台界面数据是没有乱码的。

那应该是后台action中接收的编码方式是iso-8859-1。
在action中打断点,观察到若用Map temp1Map = JSONObject.fromObject(titleString)得到为{title="æ¥å¿æ¨¡å访é®ç»è®¡åæå¾", subtitle="2014å¹´03æ25æ¥ è³ 2014å¹´03æ26æ¥å模å访é®é¥¼ç¶å¾"},是乱码。所以此处要求编码方式的一些处理。即,titleString=request.getParameter("titleString"),titleString.getBytes("iso-8859-1"), "UTF-8"),将其转为UTF-8格式。
request 为protected HttpServletRequest request;// 请求的request对象。
public String statisticLog() {
Map tempMap = JSONObject.fromObject(yString);
tempMap.putAll(JSONObject.fromObject(xString));
try {
titleString = new String(request.getParameter("titleString").getBytes("iso-8859-1"), "UTF-8");
tempMap.putAll(JSONObject.fromObject(titleString));
} catch (Exception e) {
e.printStackTrace();
}
chartMap=tempMap;
chartMap.put("timeType", timeType);
return SUCCESS;
}
网上还有使用escape(或encodeURI)的方法的,我尚未验证,贴出地址:http://www.cnblogs.com/qiuyi21/articles/1089555.html,感觉比较麻烦。
ajax中url赋json格式的值时发生中文乱码的相关问题的更多相关文章
- Ajax中XML和JSON格式的优劣比较
刚做完一个小的使用Ajax的项目.整个小项目使用JavaScript做客户端,使用PHP做服务器端.利用xmlHttpRequest组件作为交互工具,利用XML作为数据传输的格式.做完后基本做一个简单 ...
- postman 中url有动态变换的值时,可以按下面方式变换。
get 和post均适用.
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...
- ajax往后台传json格式数据报415错误
问题描述: ajax往后台传json格式数据报415错误,如下图所示 页面代码 function saveUser(){ var uuId = document.getElementById(&quo ...
- jmeter随笔(1)-在csv中数据为json格式的数据不完整
昨天同事在使用jmeter遇到问题,在csv中数据为json格式的数据,在jmeter中无法完整的取值,小怪我看了下,给出解决办法,其实很简单,我们一起看看,看完了记得分享给你的朋友. 问题现象: 1 ...
- Ajax中返回数据的格式
Ajax中常见的返回数据的格式有三种:分别为文本,XML和JSON 返回的文本格式我们在上一堂课Ajax基础介绍中已经介绍过了 Ajax.php Form.html:通过Ajax对象的response ...
- ajax中datatype的json和jsonp
前言: 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域 ...
- jQuery ajax中的dataType——JSON和JSONP
引用:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html [原创]说说JSON和JSONP,也许你会豁 ...
- ajax接收遍历处理json格式数据
ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面. 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的jso ...
随机推荐
- 《HelloGitHub》第 21 期
公告 元旦快乐! <HelloGitHub>第 21 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编 ...
- Java IO学习要点导图
Java IO的一些基础知识: 导图源文件保存地址:https://github.com/wanghaoxi3000/xmind
- Java零碎总结
获取当前类运行的根目录(即classpath,如bin.classes.AppName等)的方式有: 1.Thread.currentThread().getContextClassLoader(). ...
- 同时只允许Count个线程访问同一块区域的实现方式
转载请注明出处. 好吧,后来才发现有Semaphore和SemaphoreSlim这两个类. 以前的答案: 最近.Net项目中用到了网页截图功能,这个截图功能是类似后台开了一个IE浏览器默默加载某个网 ...
- Java 本地开发环境搭建(框架采用 Spring+Spring MVC+Hibernate+Jsp+Gradle+tomcat+mysql5.6)
项目搭建采用技术栈为:Spring+Spring MVC+Hibernate+Jsp+Gradle+tomcat+mysql5.6 搭建环境文档目录结构说明: 使用Intellj Idea 搭建项目过 ...
- Java 伙伴系统(模拟)
参考:https://labrick.cc/2015/10/12/buddy-system-algorithm/ 代码过烂 不宜参考. output: [operating.entity.Heap@4 ...
- 回顾2017系列篇(一):最佳的11篇UI/UX设计文章
2017已经接近尾声,在这一年中,设计领域发生了诸多变化.也是时候对2017年做一个总结,本文主要是从2017设计文章入手,列出了个人认为2017设计行业里最重要的UI/UX文章的前11名,供大家参考 ...
- lesson - 9 Linux系统软件包管理
1. rpm工具rpm Redhat Package Manager, 设计理念是开放的,不仅仅是在RedHat平台上,在SUSE上也是可以使用的. rpm包名字构成由-和.分成了若干部分,如abrt ...
- Jmeter非GUI模式运行
非GUI模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用的命令: jmeter -n -t 脚本文件路径 -l 结果输出文件路径 -j 日志文 ...
- 安装MySQL时提示3306端口已被占用的解决方案
之前安装过mysql,用的好好的,但是今天开启服务时报异常,无法启动.为省事,于是想到卸载重装,安装过程中发现3306已经被占用,这也是一开始服务无法启动的原因. 看到有人说用fport查看端口号,于 ...