Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中对HTTP请求中的西里尔符号进行编码?_Java_Android_Utf 8_Encode - Fatal编程技术网

如何在Java中对HTTP请求中的西里尔符号进行编码?

如何在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

好时间! 我的Adroid应用程序对Google的一个API服务执行HTTP请求。当然,当请求的参数是英语时,它是有效的,但是当我用西里尔文测试我的函数时,我得到了400错误。问题似乎是,将Win-1251字符串编码为UTF-8?如何在Java中实现?您应该使用它来编码请求参数

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”

如果您想使用其他软件将此字符串发送到其他软件 然后您需要将字符串转换为字节 使用class
CharsetEncoder
或使用 类
OutputStreamWriter
并传递
字符集

如果您从其他软件接收到不同字符的字符串 设置并使用class
CharsetDecoder
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())