gpt4 book ai didi

java - "Unmappable character for encoding UTF-8"错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:51 26 4
gpt4 key购买 nike

我在以下方法中遇到编译错误。

public static boolean isValidPasswd(String passwd) {
String reg = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~#;:?/@&!\"'%*=¬.,-])(?=[^\\s]+$).{8,24}$";
return Pattern.matches(reg, passwd);
}
at Utility.java:[76,74] unmappable character for enoding UTF-8. 74th character is' " '

我该如何解决这个问题?谢谢。

最佳答案

您的源代码文件存在编码问题。它可能是 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 编码中会生成不同的字节。我想这将与真实源文件的缩进相匹配。

 String reg = "      String reg = \"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~#;:?/@&!\"'%*=¬.,-])(?=[^\\s]+$).{8,24}$\";";
String corrupt=new String(reg.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(corrupt+": "+corrupt.charAt(74));
System.out.println(reg+": "+reg.charAt(74));

这会产生以下输出(由于标记而困惑):

String reg = "^(?=.[0-9])(?=.[a-z])(?=.[A-Z])(?=.[~#;:?/@&!"'%*=�.,-])(?=[^\s]+$).{8,24}$";: �

String reg = "^(?=.[0-9])(?=.[a-z])(?=.[A-Z])(?=.[~#;:?/@&!"'%*=¬.,-])(?=[^\s]+$).{8,24}$";: ¬

查看“直播”:https://ideone.com/ShZnB

要解决此问题,请使用 UTF-8 编码保存源文件。

关于java - "Unmappable character for encoding UTF-8"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53506180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com