编译工程时报java:[1,0] illegal character: \65279问题排查与解决过程

在使用SVN回退并重新编译Java文件时遇到'java:[1,0] illegal character: 65279'错误。问题源于文件的Byte Order Mark (BOM)。解决方法是在EditPlus中设置UTF-8编码不带BOM,然后保存文件。BOM用于标识文件的UTF-8编码,但在某些情况下可能导致编译问题。" 83419107,7863994,C# Unity 依赖注入实战指南,"['C#开发', 'Unity框架', '依赖注入', '接口设计', '配置管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发人员通过SVN提交了xxx.java文件,因发布时该包有问题需要回退,故SCM将该xxx.java文件用editplus打开删除了新添的一行,删除后重新编译打包,却报了如下异常:

java:[1,0] illegal character: \65279
表面看着该文件确实没错,看不出来问题,后来从SVN上更新下代码以后,发现本地也不报错,后来通过Eclipse查看了该xxx.java类的属性,才发现玄机所在:

编译有问题的文件属性:(注意最下面一行 Byte Order Mark is UTF-8  (BOM)


编译正常的文件属性:


看来问题出在 Byte Order Mark is UTF-8  (BOM)上。因为看不出来问题,所以用UltraEdit打开两个文件,并用16进制格式显示:

有问题的文件头:


无问题的文件头:

这个错误通常表示在解码Base64字符串时,遇到了非法的字符。解决这个问题的办法是确保输入的Base64字符串是有效且正确的。 首先,检查你要解码的Base64字符串是否正确。Base64字符串应该由有效的Base64字符组成,包括大写字母、小写字母、数字、加号(+)和斜杠(/)。还要确保字符串的长度是4的倍数。 如果你确定Base64字符串是正确的,但仍然遇到这个错误,那么可能是由于转义字符引起的问题。在Java中,反斜杠(\)是一个特殊字符,用于转义其他字符。如果你的Base64字符串中包含反斜杠字符,请确保它们被正确地转义。 另外,Java提供了Base64类,可以用来进行Base64编码和解码操作。使用Base64类可以更方便地处理Base64字符串。 以下是一个示例代码,展示了如何使用Base64类进行解码操作: ```java import java.util.Base64; public class Base64DecodeExample { public static void main(String[] args) { String base64Str = "SGVsbG8gd29ybGQh"; try { byte[] decodedBytes = Base64.getDecoder().decode(base64Str); String decodedStr = new String(decodedBytes, "UTF-8"); System.out.println("Decoded string: " + decodedStr); } catch (IllegalArgumentException e) { e.printStackTrace(); } } } ``` 请将上述示例代码中的`base64Str`替换为你要解码的Base64字符串,然后运行代码看看是否还会出现相同的错误。如果仍然有问题,请检查输入的Base64字符串是否正确,并确保没有其他代码或操作导致错误的出现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值