首页 > 其他分享 >spring使用jdk17运行出现编码问题

spring使用jdk17运行出现编码问题

时间:2024-03-20 19:57:13浏览次数:27  
标签:编码 regtxt jdk17 spring jvm utf8 java

遇到一个比较奇怪的问题。

这个问题别人也遇到过。

https://blog.csdn.net/gao_chuan_g/article/details/115117712

一、情况简介

使用jdk17+springboot3.x+spring6.x写一个小应用A,其中有一部分代码是用于生成SM2加密后的字符串,这个字符串会再做一些处理,最终会显示在前端的页面。

为了便于行文,把这个字符串称为regtxt。regtxt大概是这样的:

 

其他的应用对regtxt解密为decRegTxt,再把decRegTxt反序列化为一个java对象t。

它本身有个”用户名称“的属性,通常是中文。

在开发环境下,A生成的字符串regtxt可以正确地被其他应用解密并反序列化,中文不乱码。

但是,当A打包部署运行的时候,结果发现是乱码的。

二、问题排查

发现问题后,马上就想到:是不是编译的时候不是用utf8。当然后面证明这个想法是非常愚蠢和错误的。

重写用uf8编译打包后,还是没有解决。

于是想:应该是jvm的运行环境不是utf8导致的,那么如何修改jvm的编码?

找了一些资料,依稀想起有个-D的参数可以控制,又搜了下,确认了:-Dfile.encoding=UTF8

于是修改启动命令为: java -Dfile.encoding=UTF8 -jar reg.jar

结果是对的。

还有没有其它的解决方法了?使用代码强制转为utf8输出?这个也是可行的!不过这个需要修改sm2工具的方法。

 

三、总结

1.基础知识还是不够牢靠,居然会怀疑java代码的编码问题

2.在jvm内部影响编码的主要方式:根据环境变量或者强制编码的方式来控制。当然其它方式也是可以控制的。

 

标签:编码,regtxt,jdk17,spring,jvm,utf8,java
From: https://www.cnblogs.com/lzfhope/p/18085939

相关文章

  • Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作
    上文Springboot2.7整合jetcache方法缓存我们做了个方法缓存的案例可以将接口内容缓存起来是能大大提高效率的但是我们接口的数据大多来自数据库如果我们调用增删查改它的数据变化了那缓存的内容就会因为没有及时更新变的不准确例如我们这样我们在上面定义了......
  • Spring boot2.7整合jetcache方法缓存
    前面的文章我们讲了springboot整合jetcache做基本字符串数据缓存但是我这里有个这样的逻辑我的domain包下有一个book属性类里面就id和name属性设置了对应的setget函数和一个整体的构造函数packagecom.example.javadom.domain;publicclassboo......
  • 【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现
    文章目录引入认识YAML格式规范定义脱敏规则格式脱敏逻辑实现读取YAML配置文件获取脱敏规则通过键路径获取对应字段规则原始优化后对数据进行脱敏处理递归生成字段对应的键路径脱敏测试完整工具类引入在项目中遇到一个需求,需要对交易接口返回结果中的指定字段......
  • 1、【AI技术新纪元:Spring AI解码】Spring AI 应用框架
    SpringAI应用框架SpringAI是面向人工智能工程的应用框架。其目标是将Spring生态系统的设计原则如可移植性和模块化设计应用于AI领域,并推广使用POJOs(PlainOldJavaObjects,简单旧式Java对象)作为应用程序的构建块。特点跨AI提供商的可移植API支持,涵盖聊天、文本到图像......
  • springboot-Swagger
    Swagger简介前后端分离Vue+SpringBoot后端时代:前端只用管理静态页面:html==>后端。。模版引擎JSP=>后端是主力前后端分离后端:后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】Swagger号称世界上最流行的API框架RestfulApi文档在线自动生成......
  • Spring入门案例
    一、下载Spring5jar包官网地址:https://spring.io/版本目录:https://spring.io/projects/spring-framework#learn下载地址:https://repo.spring.io/ui/native/release/org/springframework/spring/二、新建java工程2.1新建项目2.2导入jar包必需的jar包2.2.1新建lib......
  • Springboot笔记-05
    1.Springboot的热部署spring为开发者提供了一个名为spring-boot-devtools的模块来使SpringBoot应用支持热部署,提高开发者的开发效率,无需手动重启SpringBoot应用。在pom文件加入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-b......
  • SpringBoot整合Mybatis(SpringBoot3)
    依赖pom.xml:pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://......
  • spring的IOC
    IOC翻译成中文是"控制反转",不是具体技术,而是实现对象解耦的思想。控制反转的意思是将依赖对象生命周期控制权进行反转,全称应该是控制权反转。之前需要一个对象,常用的方法就是在当前对象中new一个对象,那这样有个比较大的问题在于,耦合,一旦new的那个对象构造方法变动,那么所有使用到......
  • 第一次实践spring cloud项目出的若干问题
    也许更好的阅读体验技术栈说明springcloud+eureka+feign+ribbon+hystrix+gateway+config+bus反序列化失败:Typedefinitionerror:[simpletype,classcom.elm.po.CommonResult];nestedexceptioniscom.fasterxml.jackson.databind.exc.InvalidDefinition......