gpt4 book ai didi

java - Spring Boot编码问题ISO而不是UTF-8

转载 作者:行者123 更新时间:2023-12-02 10:11:22 26 4
gpt4 key购买 nike

Spring Boot 使用 ISO-8859-1 而不是 UTF-8@RequestHeader 注释中解码字符串。

application.properties 的摘要

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.http.encoding.force-request=true
spring.http.encoding.force-response=true
spring.messages.encoding=UTF-8
spring.banner.charset=UTF-8
spring.mandatory-file-encoding=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.freemarker.charset=UTF-8

Controller

@Controller
@RequestMapping(value = "/mapping/", produces = "text/plain;charset=UTF-8")
public class MyController {}

curl 命令

curl 'https://example.com/mymapping/' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: https://example.com/mymapping/' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.9,de;q=0.8' -H 'Cookie: cookiesession1=<*>; mellon-cookie=<*>; JSESSIONID=<*>' --compressed

一些特殊字符的解码仍然是错误的,例如 ü 之后将是 ü

通过以下解决方法,我得到了正确的字符串。

private static final Charset UTF_8 = Charset.forName("UTF-8");
private static final Charset ISO = Charset.forName("ISO-8859-1");

String textnew = new String(textold.getBytes(ISO), UTF_8);

我想声明我的应用程序以 UTF-8 格式(而不是 ISO 或类似格式)解码所有数据。有什么建议吗?

最佳答案

我在某处读到 Java 期望 *.properties 文件以 ISO-8859-1 进行编码,这就是 Spring 将 application.properties 视为 ISO-8859-1 中的原因。尝试使用 YAML 而不是属性文件。

关于java - Spring Boot编码问题ISO而不是UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54983110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com