我的密码生成器正在生成gamma符号和分数我该怎么修?

tvmytwxo  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(396)

我的密码生成器正在生成gamma符号和分数。。。我该怎么修?
它有时工作正常,但有时会生成伽马符号和分数。他们想让我把更多的细节放进去,但那真的是。。。
我在想,也许我可以把数字的类型改成int,但我不是很有信心。
只是为了好玩。。。我正在努力学习java,这首曲子是我正在玩的东西。。。您提供的任何帮助都将是伟大的!谢谢!

import java.util.Random;

public class PasswordGenerator 
{
  public static void main(String[] args)
  {
    int length = 10;
    System.out.println(generatePswd(length));
  }
  static char[] generatePswd(int len)
  {
    System.out.println("Your Password:");
    String charsCaps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String chars = "abcdefghijklmnopqrstuvwxyz";
    String nums = "0123456789";
    String symbols = "!@#$%^&*_=+-/€.?<>)";

    String passSymbols = charsCaps + chars + nums + symbols;
    Random rnd = new Random();

    char[] password = new char[len];
    int index = 0;
    for (int i = 0; i < len; i++) 
    {
        password[i] = passSymbols.charAt(rnd.nextInt(passSymbols.length()));

    }
    return password;
  }
}
iyr7buue

iyr7buue1#

把钥匙拿出来 symbols 字符串。它不是ascii字符,所以它被编码为utf-8,而utf-8在您的控制台上没有正确显示。
明确地, 是unicode字符 U+20AC ,在utf-8中编码为 E2 82 AC . 标准dos字符集(代码页437)将这些字节解释为字符 Γé¼ .
为了避免编码问题,应该使用可打印的ascii字符(0x20到0x7e)。

f8rj6qna

f8rj6qna2#

这是因为你有 非asci的符号。如果您的终端不支持unicode,它将显示“奇怪”。

相关问题