简体   繁体   English

将Unicode字符串转换为带有'%XX'字符的转义ASCII字符串

[英]Convert unicode string to an escaped ASCII string with '%XX' characters

I have java code that gets URLs with UTF characters, that should be converted to "escaped" characters, such as %A4%FD etc. 我有Java代码,它获取带有UTF字符的URL,应将其转换为“转义”字符,例如%A4%FD等。

Is there a way to make this conversion? 有没有办法进行这种转换?

Take a look at java.net.URLEncoder. 看一看java.net.URLEncoder。 Or you can make your own encoder based on String.format: 或者,您可以基于String.format制作自己的编码器:

char c = 'Ë';
String hex = System.out.printf("%%%02X%%%02X", c & 0xFF, (c >> 8) & 0xFF);

this converts c to %CB%00 这会将c转换为%CB%00

To covert a string: 隐蔽字符串:

    String s = "1Ë2";
    StringBuilder sb = new StringBuilder();
    for(char c : s.toCharArray()) {
        if (c > 128) {
            sb.append(String.format("%%%02X%%%02X", c & 0xFF, (c >> 8) & 0xFF));
        } else if (c == '%'){
            sb.append("%%");
        } else {
            sb.append(c);
        }
    }
    System.out.println(sb);

result: 结果:

1%CB%002

只需使用此:URLEncoder.encode(str2,“ utf-8”)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM