如何在Java中对HTTP请求中的西里尔符号进行编码?
好时间! 我的Adroid应用程序对Google的一个API服务执行HTTP请求。当然,当请求的参数是英语时,它是有效的,但是当我用西里尔文测试我的函数时,我得到了400错误。问题似乎是,将Win-1251字符串编码为UTF-8?如何在Java中实现?您应该使用它来编码请求参数如何在Java中对HTTP请求中的西里尔符号进行编码?,java,android,utf-8,encode,Java,Android,Utf 8,Encode,好时间! 我的Adroid应用程序对Google的一个API服务执行HTTP请求。当然,当请求的参数是英语时,它是有效的,但是当我用西里尔文测试我的函数时,我得到了400错误。问题似乎是,将Win-1251字符串编码为UTF-8?如何在Java中实现?您应该使用它来编码请求参数 String query = "name1=" + URLEncoder.encode(value1, "UTF-8") + "&name2=" + URLEncoder.encode(v
String query = "name1=" + URLEncoder.encode(value1, "UTF-8")
+ "&name2=" + URLEncoder.encode(value2, "UTF-8")
+ "&name3=" + URLEncoder.encode(value3, "UTF-8");
String url = "http://example.com?" + query;
// ...
注意,参数名实际上也应该是URL编码的,但是在这个特定的示例中,它们都已经有效了。还请注意,当您使用Android的内置API时,您不需要这样做。尝试:
URLEncoder.encode(yourString, HTTP.UTF-8);
Java中的所有
String
对象都编码为Unicode(UTF-16)
Unicode包括Windows-1251字符中的字符
设定
例如,“Česká”是“\u010Cesk\u00E1”
如果您想使用其他软件将此字符串发送到其他软件
然后您需要将字符串转换为字节
使用classCharsetEncoder
或使用
类OutputStreamWriter
并传递字符集
如果您从其他软件接收到不同字符的字符串
设置并使用classCharsetDecoder
或InputStreamReader
使用
字符集
将其转换为反Unicode。更新Debricated参数:
import static java.nio.charset.StandardCharsets.UTF_8;
String pathEncoded = "";
try {
pathEncoded = URLEncoder.encode(path, UTF_8.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
是的,感谢您提供详细信息,特别是关于Android的HttpClientDeprecatad(UTF-8use
urlcoder.encode(yourString,java.nio.charset.StandardCharsets.UTF_8.toString())