您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用声明的encoding = utf-8从xml中删除非UTF-8字符-Java

使用声明的encoding = utf-8从xml中删除非UTF-8字符-Java

1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,“”)摆脱这个字符吗?

我假设您的意思是说您要摆脱非ASCII字符,因为您正在谈论“传统”方面。您可以使用以下正则表达式消除可打印ASCII范围之外的任何内容

string = string.replaceAll("[^\\x20-\\x7e]", "");

2)我得到xml作为字节数组-在这种情况下如何安全地处理此操作?

您需要将包裹在byte[]ByteArrayInputStream,以便可以使用UTF-8编码的字符流(通过InputStreamReader其中指定编码)BufferedReader来读取它们,然后使用来逐行读取。

例如

BufferedReader reader = null;
try {
    reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes), "UTF-8"));
    for (String line; (line = reader.readLine()) != null;) {
        line = line.replaceAll("[^\\x20-\\x7e]", "");
        // ...
    }
    // ...
java 2022/1/1 18:27:24 有608人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶