json转码,php如何输出中文json格式字符串
json转码,php如何输出中文json格式字符串详细介绍
本文目录一览: php将数组转为json出现中文乱码怎么办
php将数组转为json出现中文乱码的解决方法:首先将数组中的每个元素进行urlenconde()转码;然后再使用json_encode()函数把每个元素转为json即可。解决思路:(推荐教程:php视频教程)为数组里的每个元素进行urlencode()转码,然后再用json_encode()转为json即可。解码使用json_decode()。举例:foreach ( $result as $keys => $value )//包含中文的二维数组$result转json,数组内部元素一一使用urlencode转换即可保证中文不乱码{ foreach($value as $key=>$column){ $testJSON[$keys][$key] = urlencode ( $column ); }}var_dump( json_encode ( $testJSON ));//转为json$result = urldecode ( json_encode ( $testJSON ) );//转回数组更多相关知识请访问php培训。
android 接收url的json数据 中文转码
服务器端:String encodeStr = URLEncoder.encode("中国", "utf-8"); System.out.println("处理后:" + encodeStr); //处理后:%E4%B8%AD%E5%9B%BD 客户端:String decodeStr = URLDecoder.decode(encodeStr, "utf-8"); System.out.println("解码:" + decodeStr); //解码:中国
php 写接口 json输出 中文转码
$a='{"allcount":"107","listurl":"house","project":[{"projcode":"3410877100","projname":"rrr","housecount":"5981"}]}';var_dump(json_decode($a,1));
php在将数组转成json的时候,key值是中文的,乱码怎么解决!
那不是乱码,那是utf8转码, php5.3之后可以加个参数避免转码,json_encode($arr, JSON_UNESCAPED_UNICODE);
一般呢,像我的话,项目是utf-8的,所以页面也是utf-8的格式,使用的时候如下:
function test(){ $arr = array('status'=>1,'info'=>'操作成功'); exit(json_encode($arr));}注:一般返回部分会进行封装
在当前页面设置 header("Content-type: text/html; charset=utf-8");
然后转码,如果还有乱码的话,就是你这个打开的编辑器字符集不对。输出看能不能正确显示把
乱码的话是因为文件的格式不正确,而网页编码是默认为文件编码格式的,JSON又是UTF-8编码,所以你的文件可能是GB2312格式,所以导致JSON内的中文乱码。
这种情况转换为UTF-8格式就可以了。
(注意,转换成无BOM格式的,记事本转换的UTF-8是带BOM的,会导致JSON无法正确解析)
php如何输出中文json格式字符串
php如何输出中文json格式字符串
如何对json格式的字符串进行转换,php提供了两个函数:
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行编码
下面看个实例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);
输出为:
["a","b","c"]
但是,当我们在数组中放入中文的时候,就会出现问题:
$arr = [ '世界', '你好',
];echo json_encode($arr);
输出的结果为:
["\u4e16\u754c","\u4f60\u597d"]
这个结果显然不是我们想要的,但是为什么出现这个呢?
因为当我们的值中包含中文时,php对他进行json编码时底层会对中文进行unicode编码,导致结果不可读,那该怎么解决呢?
方法一
可以利用 urlencode 和 urldecode 方法绕过这个转码为 unicode 的过程,先将中文字段进行urlencode,然后json_encode,最后再用urldecode处理结果,便可以正常显示中文。具体代码如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));
输出结果为:
["世界","你好"]
方法二
自PHP5.4版本,官方就已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。具体代码如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]
看吧,这才是我们想要的结果 🙂
PHP json多维数组追加数组怎么写?
json转数组,数组追加数组,数组转json。
首先你需要把json转码为php可操作的数组类型(Array), 再进行追加数据.
$data = '{"msg":"200","名单":[{"名字":"小明"}]}';$data = json_decode($data, true); // 转码为数组$data['名单'][] = ['名字' => '新数据']; // 追加数据// 或者: array_push($data['名单'], ['名字' => '新数据']);$data = json_encode($data); // 重新转码为JSON字符串
为什么在解析json中汉字解析不了
var jsons={"RESULT":100,"MESSAGE":"提交成功!","BATCHID":86117};
alert(jsons.MESSAGE);
String msg = "提交成功!";
response.getWriter().write("{RESULT:100, MESSAGE:" + msg + ",BATCHID:86117 }");
{"RESULT":100,"MESSAGE":"提交成功!","BATCHID":86117}
缺少引号,最好把数字也用引号括起来
Swift 解析的json中unicode的问题(\u)
使用Foundation的 JSONSerialization 解析带有unicode的json 字符串时,报错如下:
解析出错的json如下:
仙***\uDF19 这段文本中有unicode 编码,无法正常解析,
解决方案:
CFStringTransform 可以解决转换unicode 编码, 其可以在拉丁语和阿拉伯语、西里尔语、希腊语、韩语(韩国)、希伯来语、日语(平假名和片假名)、普通话、泰语之间来回转写。
通过其进行转换
将json 字符串 通过CoreFoundation中的 CFStringTransform 转码,然再通过 JSONSerialization 解析:
或者使用swift标准库的 String 的方法:
解析:
如何解决JSON返回的中文乱码?
一个国标一个通标 数据库编码 和你java的编码格式不一致,看起来像是 GBK--》UTF8 你的java 是gbk 数据库是UTF8 数据库编码 和你java的编码统一都用GBK、GB2312应该没有问题
服务器返回的是utf-8,jsp页面上也是utf-8,数据库也是utf-8怎么就是乱码呢!!!!问题出在getHttpResponse 输入流!in = new BufferedReader(new InputStreamReader(connection.getInputStream()));改为in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
///////////以下如果都试过了还无效,你可以找找你的输入流输出流是不是有问题////////////////URLDecoder.decode(URLDecoder.decode(json, "GBK"), "UTF-8");response.setContentType("text/html;charset=utf-8");json =new String(json.getBytes(),"UTF-8");
为了50分也是拼了 解决了请点赞 没决绝也别踩 为你百度半天
使用jQuery ajax调用的返回json,中文乱码问题
Js代码如下:
$.ajax({ url: '/test/testAction.do?method=test', type: 'POST', dataType: 'json', timeout: 5000, async: false, error: function(){ alert('获取数据失败!'); }, success: function(json){ jsObject = eval(json); } }); return jsObject;
Js代码
action:
Java代码
JSONArray json = JSONArray.fromObject(SysList);//SysList是一个List // 设置response的ContentType解决中文乱码 response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(json.toString()); return null; Java代码
服务器是UTF-8吗,数据库是UTF-8吗?
getHttpResponse 输入流的位置怎么写的?
如果是这样,in = new BufferedReader(new InputStreamReader(connection.getInputStream()));改成这样,in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
如果都试过了还无效,你可以看看你的输入流输出流是不是有问题
URLDecoder.decode(URLDecoder.decode(json, "GBK"), "UTF-8");
response.setContentType("text/html;charset=utf-8");
json =new String(json.getBytes(),"UTF-8");
你的json 字符串的内容本来就乱码了吧
你可以在获取字符串 json的地方做编码处理
你的代码是 字符串->byte[]->字符串 所以那个UTF8 可能效果不到
如果解决乱码的话 需要的是 byte[]->转字符串
转码应该在JSON 之前 不知在json 之后
GBK还有乱码就换成GB2312呗。
【 解决方法】:
@RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8")
/**输入手机号码后判断手机号是否存在*/@RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8")@ResponseBodypublic String getphone(String phone,HttpSession session){Users u=service.selectPhoneService(phone);if(u==null){//如果为空,则需要注册String str="请您先注册,再登录。";session.setAttribute("str", str);return "请您先注册,再登录。";}return "true";
【方法二,在spring-mvc.xml中添加】:
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
application/json;charset=UTF-8
</bean