我在以下方法中遇到编译错误。
public static boolean isValidPasswd(String passwd) {
String reg = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~#;:?/@&!\"'%*=¬.,-])(?=[^\\s]+$).{8,24}$";
return Pattern.matches(reg, passwd);
}
在 Utility.java:[76,74] 无法映射的字符
编码 UTF-8。第74个字符是'"'
我怎样才能解决这个问题?谢谢。
原文由 Ravi 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的源代码文件存在编码问题。它可能是 ISO-8859-1 编码的,但编译器设置为使用 UTF-8。这将导致在使用字符时出现错误,这些字符在 UTF-8 和 ISO-8859-1 中的字节表示形式不同。这将发生在所有不属于 ASCII 的字符上,例如
¬
NOT SIGN 。您可以使用以下程序对此进行模拟。它只是使用你的源代码行并生成一个 ISO-8859-1 字节数组并用 UTF-8 编码解码这个“错误”。您可以看到该行在哪个位置被损坏。我在您的源代码中添加了 2 个空格以适合位置 74 以使其适合
¬
NOT SIGN ,这是唯一的字符,它将在 ISO-8859-1 编码和 UTF-8 编码中生成不同的字节。我想这会将缩进与真实的源文件相匹配。这导致以下输出(由于标记而混乱):
在 https://ideone.com/ShZnB 上查看“实时”
要解决此问题,请使用 UTF-8 编码保存源文件。