ホームページ >ウェブフロントエンド >jsチュートリアル >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の漢字処理のsupportedMediaTypesに1種類不足していることが判明しました。
ブラウザによって送信されたリクエストから判断すると:
非同期更新では
postリクエストが使用されますが、サーバーから返されたときのContent-Typeは次のとおりです: text/plain;charset=ISO-8859-1charsetは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 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
Ajax + サーブレットによるリフレッシュ不要のドロップダウンリンクの実装 (コード付き) Ajax を使用して json データを未定義として取得する方法以上がAjax が JSON データをロードするときにデータ内の漢字が文字化けする場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。