Ваш код
Connector.open("http://127.0.0.1:1418/zp.ashx?тест");
обрабатывается java.nio.CharsetDecoder для набора символов ASCII, и этот декодер заменяет все неизвестные символы его заменой .
Чтобы получить желаемое поведение, вы должны закодировать 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());
}
}