我有一个字符串,字符为“Á”(西班牙语),并且对API的请求有一些问题。
通过这种方式,我得到了400错误错误请求
String address = "Ángel Marsa I Becá è";
String encoded = new String(address.getBytes("UTF-8"));
System.out.println(encoded);//�ngel Marsa I Becá è
使用其他方式进行编码,先使用ISO-8859-1,然后使用UTF-8,我不会收到BAD REQUEST 400错误。
byte ptext[] = address.getBytes("ISO-8859-1");
String value = new String(ptext, "UTF-8");
System.out.println(value);//?ngel Marsa I Bec? ?
这种方式是否正确编码了UTF8?
这是编码为UTF-8的最佳方法,特别是带有重音符号或带有“ñ”的字符串。
谢谢
您可以使用java.net.URLEncoder传递URL中不可接受的字符串。
String s = "Ángel Marsa I Becá è";
String e = URLEncoder.encode(s, "UTF-8");
System.out.println(e);
这看起来像%C3%81ngel+Marsa+I+Bec%C3%A1+%C3%A8
。
一旦通过网络获得它,您始终可以使用UrlDecoder.decode恢复原始文本。
我缺少Content-Type的参数charset = utf-8。