有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

规范化字符串以在Java中创建安全URL

我正在用Java编写一个库,它通过以下方式从文件名列表创建URL:

final String domain = "http://www.example.com/";

String filenames[] = {"Normal text","Ich weiß nicht", "L'ho inserito tra i princìpi"};

System.out.println(domain+normalize(filenames[0]);
//Prints  "http://www.example.com/Normal_text"
System.out.println(domain+normalize(filenames[1]);
//Prints  "http://www.example.com/Ich_weib_nicht"
System.out.println(domain+normalize(filenames[2]);
//Prints  "http://www.example.com/L_ho_inserito_tra_i_principi"

某个地方存在一个Java库,它公开了我在上面代码中使用的方法normalize

文献:


共 (2) 个答案

  1. # 1 楼答案

    从我前面的答案here中获取内容,您可以使用^{},它接近于在Java中规范化字符串。正常化的一个例子是

    重音删除:

    String accented = "árvíztűrő tükörfúrógép";
    String normalized = Normalizer.normalize(accented,  Normalizer.Form.NFD);
    normalized = normalized.replaceAll("[^\\p{ASCII}]", "");
    
    System.out.println(normalized);
    

    给予

    arvizturo tukorfurogep
    
  2. # 2 楼答案

    假设您的意思是要对字符串进行编码,以使它们对url安全。在这种情况下,请使用URL编码器:

    final String domain = "http://www.example.com/";
    
    String filenames[] = {"Normal text","Ich weiß nicht", "L'ho inserito tra i princìpi"};
    
    System.out.println(domain + URLEncoder.encode(filenames[0], "UTF-8"));
    System.out.println(domain + URLEncoder.encode(filenames[1], "UTF-8"));
    System.out.println(domain + URLEncoder.encode(filenames[2], "UTF-8"));