SSE字符串以及Flux<String>中文乱码问题

项目场景:

用SSE给前端发送中文字符串乱码(用SseEmitter也是一样的问题):

java 复制代码
@RestController
@RequiredArgsConstructor
@RequestMapping("/agentic")
public class AgenticController {

    private final ChatAgent chatAgent;

    @PostMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> chat(@RequestParam String message) {
        return chatAgent.model(ModelEnum.DEEPSEEK)
                .prompt()
                .user(message)
                .stream()
                .content();
    }

}
  • SpringBoot:3.2.5
  • SpringMVC

原因分析:

返回的时候字符串转换StringHttpMessageConverter默认编码不是UTF-8。

解决方案:

java 复制代码
@Configuration
public class AgenticConfig extends WebMvcConfigurationSupport {

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        for (int i = 0; i < converters.size(); i++) {
            HttpMessageConverter<?> converter = converters.get(i);
            if (converter instanceof StringHttpMessageConverter) {
                // 替换成 UTF-8 编码
                converters.set(i, new StringHttpMessageConverter(StandardCharsets.UTF_8));
            }
        }
    }

}

追问

  1. 加上这个配置前端可以了,但是使用.http文件请求还是乱码,不知道为什么:
java 复制代码
POST http://localhost:8085/aigc/agentic/chat?message=%E4%BB%8A%E5%A4%A9%E6%98%AF%E5%87%A0%E6%9C%88%E5%87%A0%E5%8F%B7

HTTP/1.1 200 
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: x-requested-with
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 3600
Content-Type: text/event-stream
Transfer-Encoding: chunked
Date: Wed, 03 Dec 2025 07:07:38 GMT

Response code: 200; Time: 1051ms (1 s 51 ms)

data:ä>>Šå¤©æ˜¯

data: **

data:202

data:5

data: 

data:å¹´

data: 
  1. 改什么配置都不好使,把结果转成ISO编码也不好使,Spring难用到这种程度了吗
  2. 继承WebMvcConfigurer修改配置也不好使(必须得加@EnableWebMvc)
相关推荐
我登哥MVP4 天前
SpringCloud Alibaba 核心组件解析:服务链路追踪
java·spring boot·后端·spring·spring cloud·java-ee·maven
我命由我123454 天前
Jetpack Room - Room 查询返回列表无需判空、LIKE 关键字
android·java·开发语言·java-ee·android jetpack·android-studio·android runtime
Yvonne爱编码5 天前
JAVA EE初阶---DAY 2 计算机网络
java·开发语言·计算机网络·算法·java-ee·php
我命由我123455 天前
RFID 技术极简理解
java·c语言·c++·嵌入式硬件·物联网·visualstudio·java-ee
CoderYanger5 天前
Java EE:6.网络编程套接字(第二弹)
java·网络·程序人生·面试·职场和发展·java-ee·学习方法
我命由我123455 天前
Android 开发问题:EditText 控件的 android:imeOptions=“actionDone“ 属性不生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我登哥MVP5 天前
SpringCloud Alibaba 核心组件解析:服务熔断和降级
java·spring boot·后端·spring·spring cloud·java-ee·maven
我命由我123455 天前
Android 开发问题:获取到的 Android ID 发生了变化
android·java·开发语言·java-ee·android studio·android jetpack·android runtime
我登哥MVP5 天前
SpringCloud Alibaba 核心组件解析:服务调用和负载均衡
java·spring boot·后端·spring·spring cloud·java-ee·负载均衡
我命由我123455 天前
Android 开发问题:Unable to find explicit activity class
android·java·java-ee·android studio·android jetpack·android-studio·android runtime