>웹 프론트엔드 >JS 튜토리얼 >Ajax가 JSON 데이터를 로드할 때 데이터의 한자가 왜곡되면 어떻게 해야 합니까?

Ajax가 JSON 데이터를 로드할 때 데이터의 한자가 왜곡되면 어떻게 해야 합니까?

php中世界最好的语言
php中世界最好的语言원래의
2018-03-30 17:41:141665검색

이번에는 Ajax가 JSon 데이터를 로드할 때 데이터에서 한자가 깨졌을 때 처리하는 방법을 보여 드리겠습니다. Ajax가 데이터에 한자가 깨져 있는 JSon 데이터를 로드할 때 해결하기 위한 주의 사항은 무엇입니까? 보세요.

1. 문제 설명

zTree의 상위 메뉴 비동기 새로 고침을 사용하면 서버가 중국어 깨진 문자를 반환하지만 프로젝트에서 SpringMvc가 사용되고 중국어 깨진 문자가 계속 나타나는 이유는 무엇입니까? ?

다음은 비동기 요청 구성입니다.

Java 코드

async: { 
  enable: true, 
  url: basePath + '/sysMenu/listSysMenu', 
  autoParam: ["id=parentId"] 
}

SpringMvc 중국어 문자 처리:

Java 코드

<mvc:annotation-driven> 
  <mvc:message-converters> 
  <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
    <property name="supportedMediaTypes"> 
       <list> 
          <value>application/json;charset=UTF-8</value> 
      <value>text/html;charset=UTF-8</value> 
     </list> 
    </property> 
  </bean> 
 </mvc:message-converters> 
</mvc:annotation-driven>

반환된 결과에 중국어 문자가 깨졌습니다.

Js 코드

[ 
  { 
    "menuId": "880095098165986816", 
    "menuName": "????", 
    "parentId": "880095098165986815", 
    "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/listSysMenuUI", 
    "menuIcon": "", 
    "menuSort": 1, 
    "isEnable": 1, 
    "parentMenuName": "??", 
    "id": "880095098165986816", 
    "name": "????", 
    "pId": "880095098165986815" 
  }, 
  { 
    "menuId": "880095098165986817", 
    "menuName": "???????", 
    "parentId": "880095098165986815", 
    "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/treeSysMenuUI", 
    "menuIcon": "", 
    "menuSort": 1, 
    "isEnable": 1, 
    "parentMenuName": "??", 
    "id": "880095098165986817", 
    "name": "???????", 
    "pId": "880095098165986815" 
  } 
]

2. 해결 방법

조사 결과 SpringMvc 한자 처리의 지원되는MediaTypes에 한 가지 유형이 누락된 것으로 나타났습니다.

브라우저에서 보낸 요청으로 판단:

비동기 새로 고침은 post 요청을 사용하지만 서버에서 반환될 때 Content-Type은 text/plain;charset=ISO-8859-1

charset은 ISO입니다. UTF-8이 아닌 -8859-1이고, SpringMvc에서 처리하는 한자 깨짐문자에는 이 타입이 포함되어 있지 않아 한자 깨짐 현상이 발생한다.

그래서 최종 해결책은 다음과 같이 SpringMvc 중국어 처리에 text/plain 유형을 추가하는 것입니다.

Java 코드

<value>text/plain;charset=UTF-8</value>

세부 사항은 다음과 같습니다.

Java 코드

 
   
    application/json;charset=UTF-8 
  text/html;charset=UTF-8 
  <value>text/plain;charset=UTF-8</value> 
   

이후에 방법을 마스터했다고 믿습니다. 이 기사의 사례를 읽으면서 더 흥미로운 내용을 보려면 PHP 중국어 웹 사이트의 다른 관련 기사를 주목하십시오!

추천 자료:

새로 고침이 필요 없는 드롭다운 연결을 구현하는 Ajax+Servlet(코드 포함)

Ajax를 사용하여 json 데이터를 정의되지 않은 상태로 가져오는 방법

위 내용은 Ajax가 JSON 데이터를 로드할 때 데이터의 한자가 왜곡되면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.