您的代碼
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());
}
}