如何解决JSON返回的中文乱码?

如何解决JSON返回的中文乱码?,第1张

【 解决方法】:

@RequestMapping(value="/getphone",produces = "text/plaincharset=utf-8")

/**输入手机号码后判断手机号是否存在*/

@RequestMapping(value="/getphone",produces = "text/plaincharset=utf-8")

@ResponseBody

public 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中添加】:

<!-- 处理请求返回json字符串的中文乱码问题 -->

<mvc:annotation-driven>

<mvc:message-converters>

<bean

class="org.springframework.http.converter.StringHttpMessageConverter">

<property name="supportedMediaTypes">

<list>

<value>application/jsoncharset=UTF-8</value>

</list>

</property>

</bean>

</mvc:message-converters>

</mvc:annotation-driven>

这是unicode编码,不是乱码,你进行Unicode转码就出来了

给你写个方法转码,将unicode传递进去返回字符串

public String convert(String utfString){

StringBuilder sb = new StringBuilder()

int i = -1

int pos = 0

while((i=utfString.indexOf("\\u", pos)) != -1){

sb.append(utfString.substring(pos, i))

if(i+5 < utfString.length()){

pos = i+6

sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16))

}

}

return sb.toString()

}

解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:

//urlencode处理

function json_array($obj) {

    foreach($obj as $key => $value) {

        if(is_array($obj[$key])) {

            $obj[$key] = json_array($obj[$key])

        }else{

            $obj[$key] = urlencode($value)

        }

    }

    return $obj

}

//urldecode解密转换为中文字符

function _json($obj) {

    return urldecode(json_encode(json_array($obj)))

}

echo _json($json)//$json为你要输出的json数组

此处递归调用是为了处理多维数组······


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9914099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存