spring Boot 中文返回給瀏覽器亂碼 解析成問號?? fastJson jackJson
心路歷程:
在Controller中return 物件的時候,物件中的屬性值中文部分在瀏覽器中 顯示為問號??
@ResponseBody
@RequestMapping(value = "/test")
public String view(@PathVariable Integer id) {
//***
return jsonVO.toString();
}
然後結果是這樣的:??
嘗試排查原因:
中文亂碼常有以下三種:
1.request、response裡面的這個編碼設定
2.Tomcat 編碼設定
3.資料庫編碼設定
逐一排查:首先我直接return “中文”;結果還是亂碼。資料庫編碼 排除;
然後我寫了個過濾器:
失敗,返回依然是亂碼;@WebFilter(filterName = "myFilter", urlPatterns = "/*") public class MyFilter implements Filter { @Override public void destroy() { System.out.println("過濾器銷燬"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("執行過濾操作"); response.setCharacterEncoding("UTF-8"); System.out.println(response.getCharacterEncoding()); request.setCharacterEncoding("UTF-8"); System.out.println(request.getCharacterEncoding()); chain.doFilter(request, response); } @Override public void init(FilterConfig config) throws ServletException { System.out.println("過濾器初始化");
接著嘗試:
return new String("中文".getBytes(), "UTF-8");
失敗,返回依然是亂碼;
接著嘗試:
produces = { "application/json;charset=UTF-8" }
@RequestMapping(value = "/test", produces = { "application/json;charset=UTF-8" })
成功是成功了,可是這樣感覺很奇怪,總不能每一個RequestMapping 都這樣註解吧。
然後我就發現我封裝的jsonVO中使用的是fastjson 會不會是這個問題呢?
springboot 引入的json是 Jackjson,撞牆的想法都有了。
果斷處理:Application extends WebMvcConfigurerAdapter
重寫方法。
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}
可以了。
如果覺得繼承這個WebMvcConfigurerAdapter類影響你繼承其他類,也可以寫個@bean 放在Application 中
retunr HttpMessageConverter 型別就好;
總結:
1.新增 produces = { "application/json;charset=UTF-8" }
2.重寫configureMessageConverters方法;
[email protected] HttpMessageConverter ;
相關推薦
spring Boot 中文返回給瀏覽器亂碼 解析成問號?? fastJson jackJson
心路歷程: 在Controller中return 物件的時候,物件中的屬性值中文部分在瀏覽器中 顯示為問號?? @ResponseBody @RequestMapping(value = "/test") public String view(@Path
解決spring boot中文亂碼問題
地址 今天 解決 正常 img alt mage com 沒有 在開發或學習當中,我們不可避免的會碰到中文亂碼的問題(好想哭,但還是要保持微笑!) 今天,在學習spring boot中碰到了中文亂碼問題。 首先,看了一下workspace是不是設置utf-8默認字符集:
spring boot: 中文顯示亂碼,在applicationContext裏面配置
true ble cati odi contex rop highlight Coding csharp spring boot: 中文顯示亂碼,在applicationContext裏面配置 applicationContext.properties #########
解決Spring Boot @Responsebody後IE瀏覽器返回json時提示下載問題
解決Spring boot返回JSON物件後在IE客戶端會提示下載JSON檔案的問題 Spring boot版本1.5.3.RELEASE 問題詳細原因:在一個通用上傳下載介面中,使用@[email protected](method=RequestMethod.
Spring Boot 中文亂碼解決
使用SpringBoot開發,對外開發介面供呼叫,傳入引數中有中文,出現中文亂碼,查了好多資料,總結解決方法如下: 第一步,約定傳參編碼格式 不管是使用httpclient,還是okhttp,都要設定傳參的編碼,為了統一,這裡全部設定為utf-8
使用mvc返回給瀏覽器html元素時需要註意的一個問題
字符 html元素 使用 cot 就會 div 區別 div標簽 標簽 當直接使用 return Cotent(string str)返回給頁面html元素時,特別需要註意html標簽的格式 比如:返回"<div></div>" 在頁面上是能成功地被
spring boot 的常用註解使用 總結 解析
@PathVariable : 通過 @PathVariable 可以將 URL 中佔位符引數繫結到控制器處理方法的入參中:URL 中的 {xxx} 佔位符可以通過@PathVariable(“xxx“) 繫結到操作方法的入參中。 如圖所示:在訪問這個方法的時候,1就相當於這個
spring boot 統一返回資料及全域性異常處理
記錄關於spring boot 統一返回資料及全域性異常處理的操作實現。 一、統一返回資料 1、定義一個超類:BaseResponseVo @Data @NoArgsConstructor public class BaseResponseVo{ protected Integer r
Spring Boot介面返回json
一 實體類 1 User package com.imooc.pojo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml
Spring Boot(17)配置檔案解析
Spring Boot(17)配置檔案解析 前言 上一篇介紹了Spring Boot的入門,知道了Spring Boot使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的專案快速執行起來。所以,我們要想把Spr
spring boot中返回date為EEE MMM dd HH:mm:ss z yyyy(Fri Oct 26 00:00:00 CST 2018),轉換為 yyyy-MM-dd HH:mm:ss
問題:資料庫中日期型別為timestamp,實體類中定義為date,返回給到前端時變為了EEE MMM dd HH:mm:ss z yyyy(Fri Oct 26 00:00:00 CST 2018)格式,而我們需要的是yyyy-MM-dd HH:mm:ss。 解決方式: 在實體類定義中,定
Spring Boot 統一返回資料結構以及全域性異常處理
前言 看了廖師兄的視訊後,結合自己以前的程式設計經驗總結下 : 在 web 開發過程中, 後端要統一返回的資料結構,便於前端處理。例如每個請求,我們都需要知道 : code : 伺服器返回的狀態碼(主要給程式設計師看)。例如 : 200 : 請求成功。
Spring Boot乾貨系列:啟動原理解析,聖誕節提前快樂
前言 前面幾章我們見識了SpringBoot為我們做的自動配置,確實方便快捷,但是對於新手來說,如果不大懂SpringBoot內部啟動原理,以後難免會吃虧。所以這次博主就跟你們一起一步步揭開SpringBoot的神祕面紗,讓它不在神祕。 正文 我們開發任何一個Spring Boot專案,
Spring Boot乾貨系列:配置檔案解析
正文 Spring Boot使用了一個全域性的配置檔案application.properties,放在src/main/resources目錄下或者類路徑的/config下。Sping Boot的全域性配置檔案的作用是對一些預設配置的配置值進行修改。 接下來,讓我們一起來解開配置檔案的面紗
Spring boot中自定義Json引數解析器
轉載請註明出處。。。 一、介紹 用過springMVC/spring boot的都清楚,在controller層接受引數,常用的都是兩種接受方式,如下 1 /** 2 * 請求路徑 http://127.0.0.1:8080/test 提交型別為application/json 3
spring boot http呼叫其他服務並解析
新建一個maven專案 pom和 上一個一樣就行了,注意properties裡面多一個 #tomcat server.port=8081 這樣我就直接把他埠改了--------瞬間整兒人就好了---- package ccy.consumer_movie; import
Spring-boot 配置返回頁面
一.jsp返回頁面: 1.專案結構圖: 這是打成war包,因為springboot打jar包,webapp檔案不會被打進去,雖然可以通過外掛實現,但是有點麻煩,這裡打成war包執行 也可通過 java -jar xx.war的形式執行 2.pom檔案,依賴上都
Spring Boot 整合Shiro給Swagger&Druid放行資源
shiro的過濾器鏈配置: //放行靜態資源 filterChainDefinitionMap.put("/static/**", "anon");
Spring boot 自定義註解 簡單版本解析引數
背景:其實就是想用一個註解,來統一處理獲取userid的解析過程。 嗯,但是我覺得自己對註解也沒有那麼瞭解,所以再記錄下。spring boot 中自定義註解的方案:STEP1. 定義註解STEP2. 註解解析1. 定義註解import java.lang.annotatio
spring boot 介面返回值為null的屬性,忽略
1、註解形式 @JsonInclude(JsonInclude.Include.NON_NULL) 2、yml配置檔案 spring: jackson: default-property-inclusion: non_null