You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取Git中XML作为REST请求时遭遇0xa0非法字符错误的技术问询

解决XML请求中的Illegal character '0xa0'错误

首先,咱们先搞清楚0xa0到底是什么字符:它是不间断空格(Non-breaking Space),和我们平时敲键盘的普通空格(ASCII 0x20)不一样,它的作用是防止文本换行时把空格前后的内容分开,常见于排版场景(比如数字和单位之间,像"10 kg"里的空格就是它)。

接下来分析你的问题:你之前用的replaceAll("[\x00-\x09\x11\x12\x14-\x1F\x7F]", "")并没有包含0xa0这个字符,所以自然没法把它过滤掉,这就是错误依然存在的核心原因。

那到底该移除它还是编码呢?分两种情况来处理:

  • 如果这个不间断空格在你的XML内容里是无意义的冗余字符:直接把它加入替换规则就行,修改后的代码可以是这样:
    // 把0xa0加入待替换的特殊字符集合,同时保留正常的空格(0x20)
    String cleanedXml = originalXml.replaceAll("[\x00-\x09\x11\x12\x14-\x1F\x7F\xA0]", "");
    
    要是只想精准清除不间断空格,也可以直接写:
    String cleanedXml = originalXml.replace("\u00A0", "");
    
  • 如果这个不间断空格是业务需要保留的有效字符:那你不需要移除它,而是要确保XML能被正确处理。XML本身是支持不间断空格的,但要注意你的REST接口的要求——如果接口期望的是普通空格,你可以把它替换成ASCII 0x20;如果必须保留它的语义,只要你用UTF-8编码发送请求,大多数现代的REST框架都会自动帮你处理好编码问题,不会触发非法字符错误。

最后给你个小排查技巧:以后遇到这种隐藏的特殊字符,可以把可疑字符转成整数打印出来,比如System.out.println((int) suspiciousChar),这样就能快速定位它的ASCII码,方便后续针对性处理。

内容的提问来源于stack exchange,提问作者Jimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:48:48