我使用Angular-spring启动应用程序创建数据。在从表单写入文件时,我使用以下UTF_8编码//java 11
FileWriter = new FileWriter(Paths.get(activityFile.getRef()).toFile(), StandardCharsets.UTF_8);
文件在记事本中看起来很正常-没有特殊字符等
但我使用该文件加载到DB,我看到问题。
//java 8
try (FileReader reader = new FileReader(queFile)){
List<QuackDTO> qDTOs = objectMapper.readValue(reader, new TypeReference<List<QuackDTO>>(){});
}
如果我在其中一个属性中看到值,它将在£之前添加 -例如£100
因为我想要一个对象列表,所以我没有使用像
这样的字符串文件。readString(路径,StandardCharsets.UTF_8);
如何解决我的编码问题?
我在哪里看到问题?
文件→VOs ->每个VO ->已转换为实体类型。我已经看到属性有不需要的字符Â
编辑:
DB是mysql,但是在创建实体对象
之前我看到了特殊字符SELECT default_character_set_name FROM information_schema。SCHEMATA WHERE schema_name = "mysch";
utf8mb4
我更新代码使用- InputStreamReader与UTF-8编码
try (Reader reader = new InputStreamReader(new FileInputStream(questionsFile), "UTF-8")){
List<QuackDTO> qDTOs = objectMapper.readValue(reader, new TypeReference<List<QuackDTO>>(){});
}