2 u014734740 u014734740 于 2016.01.24 22:19 提问

网页获取json其中的中文全部显示为问号

我用的开发工具为Mysql绿色版+vs2013。
我先尽量详细地说一下我遇到的如题的问题,搞了好多个小时了,实在解决不了,求大神帮助!
首先我在mysql中有张表名为user中有一个属性为name,其中有几个值为“张三”,“李四”,“王五”,还有几个值为“111”,“222”
然后我用select name from user在mysql中测试了一下,包括中文在内的所有结果都显示正常。
接着我在搭建的服务器端的vs中写了一个cs文件,用sql语句加连接数据库语句获取了user表中的所有name值到dataTable中,然后用Dictionary逐条获取datatable中的name值并添加到一个Arraylist中,然后用JavaScriptSerializer对象序列化了这个Arraylist,并转化为JArray类型返回。
然后的然后,问题就在这里,我不知道上述的哪个步骤有问题,我用谷歌游览器访问服务器端的cs文件的url时,返回的所有name值中,例如”111“,"222"全部显示正常,但是例如”张三“,”李四“,”王五“在内的所有中文都显示成了”???“。
我查了很多的百度资料,有的人说设置response.setencode,这个类似的方法我试了很多种,证实无效;还有类似设置游览器的编码等我也试过,也无效;还有我尝试改变了从数据库中获取数据转化成Json的方法,也无效。总之,返回的JArray中的中文,一直都显示成了问号形式,求解问题到底出在哪里?!
PS:我还试过改变mysql中name属性的编码,也无效……

4个回答

oyljerry
oyljerry   Ds   Rxr 2016.01.24 22:47

数据库中先看是什么编码 查询出数据后传给网页再对应编码解码

u014734740
u014734740 数据库中是utf-8 网页也是utf-8
2 年多之前 回复
u014734740
u014734740   2016.01.24 22:48

数据库中uft-8 网页也是utf-8

csdnzlw
csdnzlw   2016.01.24 22:50

mysql字段编码改成utf-8

u014734740
u014734740 应该不是编码的问题,因为我得到的不是乱码,而全都是问号……
2 年多之前 回复
u014734740
u014734740 没有用啊……这些我都试过了
2 年多之前 回复
a510835147
a510835147   2016.01.25 08:52

乱码了。 你可以先试下在CS文件中打印下从数据库的数据,假如在这里还没有乱码,那就说明是写出响应文本的时候乱码了的。
你会抓包的话,可以看一下响应头Content-Type,看看编码是不是UTF-8。
假如不是,设置下响应编码
response.setContentType("application/json;charset=utf-8"); 我不确定.net也是这样写的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决javaweb返回json中文为问号的问题
显然一看就是编码有问题,一般加入: response.setContentType("application/json;charset=utf-8"); response.setCharacterEncoding("utf-8"); 这样一般就可以了,乱码应该会解决,但是如果你的servlet中在设置这个属性的前面已经获取了PrintWriter  :  PrintWriter out
网页获取数据内容中字符串为问号"?"
爬取网页时,获取的json数据中,字符串都是问号,如下图 尝试修改编码格式为utf-8,gbk等,都不行,后来给header加accept后编码格式正确,问号转换字符串成功 Request request = new Request.Builder()    .url(url)    .header("Accept", "application/json, text/jav
JOSN返回中文问号解决方案 亲测
@ResponseBody @RequestMapping(value = "Department") public void getDepartment(ModelMap modelMap, HttpServletResponse response) ObjectMapper mapper = new ObjectMapper(); // 创建json序列化对象 String json
网页获取JSON中文返回乱码解决方案(java)
懒得考虑各种字符编码问题了,用了一个比较暴力的方法,不只中文,所有双字节文字都可以避免乱码问题。
Springmvc返回JSON乱码问号
@RequestMapping(value="/book/getBook.do", produces = "text/html;charset=UTF-8") public @ResponseBody String getBook(String name){ List list =bookService.getBook(); for(Book bo:list){ Syste
servlet页面中文乱码或是问号
response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); ////////把这句加上,且重启Tomcat即可,页面刷新即可。要重启Tomcat才行。 // 导入必需的 java 库 import java.io.*; import javax.servlet.*; import
关于struts2,mysql,hibernate的开发环境下的中文显示为“问号”的问题总结
   ~前天刚开始学Hibernate~一切还比较顺利~但是突然发现插入mysql数据库的中文全都是问号,于是开始上网查解决的办法。我一直以为是自己在MyEclipse的编码字符集不对,于是乎几乎把所有的方法都试了一遍,但是还是问号问号。。。开始自己没有思考为什么会这样,后来我把输入的中文在每个前台页面和每个后台action都输出来看看,结果发现都是正确的。于是,想到了差不多应该是数据库的问题。
解决用ajax传递json到前台中文出现问号乱码
我使用的Springmvc,在controller层传输一个json到前台,后台显示没问题,中文正常显示而到了前台 中文就变成了问号。 后来发现,因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码。 这里我使用了注解来解决:@
ajax返回json格式时,中文乱码问题,以问号形式呈现
解决方案:将json格式用response设置编码后输出 Map resultMap = new HashMap(); resultMap.put("downloadSoftUrl", downloadSoftUrl); resultMap.put("hotKeys", hotKeyList); resultMap.put("isClose", isClose); String
JSON 含有中文传到前台变???的解决方法(使用springmvc)
错误举例 controller得到的json是{“total”:8,”limit”:3,”order”:”asc”,”offset”:0,”rows”:[{“content”:”adadad”,”id”:3,”user_name”:”aaa”,”title”:”adad”,”creattime”:”2015-03-31 11:25:40”},{“content”:”adadad”,”id”:4,”