您的代码
Connector.open("http://127.0.0.1:1418/zp.ashx?тест");
由java.nio.CharsetDecoder为ASCII字符集进行处理,该解码器替换所有未知的人物,其replacement。
要获得您想要的行为,您必须在发送URL之前对URL进行编码。例如,当您的服务器要求的URL是UTF8编码:
String encodedParameter = URLEncoder.encode("тест", "UTF-8");
Connector.open("http://127.0.0.1:1418/zp.ashx?" + encodedParameter);
请注意,如果您有多个参数,你必须把它们连同之前单独编码这两个参数名称和参数值,“ =“并将它们与”&“连接起来。如果您需要编码多个参数,本课程可能对您有所帮助:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class UrlParamGenerator {
private final String encoding;
private final StringBuilder sb = new StringBuilder();
private String separator = "?";
public UrlParamGenerator(String charset) {
this.encoding = charset;
}
public void add(String key, String value) throws UnsupportedEncodingException {
sb.append(separator);
sb.append(URLEncoder.encode(key, encoding));
sb.append("=");
sb.append(URLEncoder.encode(value, encoding));
separator = "&";
}
@Override
public String toString() {
return sb.toString();
}
public static void main(String[] args) throws UnsupportedEncodingException {
UrlParamGenerator gen = new UrlParamGenerator("UTF-8");
gen.add("test", "\u0442\u0435\u0441\u0442");
gen.add("x", "0");
System.out.println(gen.toString());
}
}