【 解决方法】:
@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数组
此处递归调用是为了处理多维数组······
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)