如何修复 £ 符号前的特殊字符 - 399 英镑 - Spring Boot json

Posted

技术标签:

【中文标题】如何修复 £ 符号前的特殊字符 - 399 英镑 - Spring Boot json【英文标题】:How to fix special character before £ sign - £399 - Spring boot json 【发布时间】:2021-11-28 19:28:03 【问题描述】:

我使用 Angular-spring boot 应用程序创建数据。从表单写入文件时,我使用 belwo UTF_8 编码 //java 11

FileWriter writer = new FileWriter(Paths.get(activityFile.getRef()).toFile(), StandardCharsets.UTF_8);

文件在记事本中看起来没问题 - 没有特殊字符等

但我使用该文件加载到数据库,但我发现了问题。

//java 8

try (FileReader reader = new FileReader(queFile))
        
            List<QuackDTO> qDTOs = objectMapper.readValue(reader, new TypeReference<List<QuackDTO>>());

如果我在其中一个属性中看到它在 £ 之前添加的值 - 比如 £100

因为我想要一个对象列表,所以我没有做类似的字符串

Files.readString(path, StandardCharsets.UTF_8);

如何解决我的编码问题?

我在哪里看到问题?

文件 -> VO 列表 -> 每个 VO -> 转换为实体类型。我已经看到属性具有不需要的字符 Â

编辑

DB 是 mysql ,但我什至在创建实体对象之前就看到了特殊字符

SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "mysch";

utf8mb4

【问题讨论】:

您使用的是什么数据库?请将其标签添加到您的问题中。您为数据库和/或列指定了什么编码? @Bohemian 添加了数据库。我使用 CloudSQL 进行生产 使用代码修复 - try (Reader reader = new InputStreamReader(new FileInputStream(questionsFile), "UTF-8")) 如果您有解决方案,请将其作为答案发布。 【参考方案1】:

我更新了要使用的代码 - 带有 UTF-8 编码的 InputStreamReader

try (Reader reader = new InputStreamReader(new FileInputStream(questionsFile), "UTF-8"))
    List<QuackDTO> qDTOs = objectMapper.readValue(reader, new TypeReference<List<QuackDTO>>());

【讨论】:

以上是关于如何修复 £ 符号前的特殊字符 - 399 英镑 - Spring Boot json的主要内容,如果未能解决你的问题,请参考以下文章

shell中的特殊符号

sql中如何判断字符串中含有特殊字符

Android 蓝牙打印机英镑符号 (£) 不工作

在线等!!如何使用正则表达式去除特殊符号

C# 如何去掉string中所有转义字符(特殊符号)?

英镑符号 (#) 作为注释在 JavaScript 中开始?