karakter kümesini alamıyor Bir sunucudan bir şey indirmek için URL.openConnection()
kullanıyorum. SunucuURLConnection,
Content-Type: text/plain; charset=utf-8
Ama connection.getContentEncoding()
döner null
söylüyor. Naber?
karakter kümesini alamıyor Bir sunucudan bir şey indirmek için URL.openConnection()
kullanıyorum. SunucuURLConnection,
Content-Type: text/plain; charset=utf-8
Ama connection.getContentEncoding()
döner null
söylüyor. Naber?
değeri URLConnection.getContentEncoding()
dönen İçerik türünü almak ve Content-Type karakter kümesini almak için yerine bir connection.getContentType()
yapın Yerine
/**
* Returns the value of the <code>content-encoding</code> header field.
*
* @return the content encoding of the resource that the URL references,
* or <code>null</code> if not known.
* @see java.net.URLConnection#getHeaderField(java.lang.String)
*/
public String getContentEncoding() {
return getHeaderField("content-encoding");
}
URLConnection.getContentEncoding()
dan başlık Content-Encoding
Kanunundan değerini verir . Ben getContentEncoding()
yöntem örnekte ayarlanmamış Content-Encoding
HTTP başlığı, içeriğini döndürmek için belirtilen gibi bu davranışı belgelenmiştir
String contentType = connection.getContentType();
String[] values = contentType.split(";"); // values.length should be 2
String charset = "";
for (String value : values) {
value = value.trim();
if (value.toLowerCase().startsWith("charset=")) {
charset = value.substring("charset=".length());
}
}
if ("".equals(charset)) {
charset = "UTF-8"; //Assumption
}
Bu yöntemler, OP'nin büyük olasılıkla konuştuğu HttpURLConnection'daki akla değerlerini döndürmek için geçersiz kılınır, bkz. http: // goo. gl/wt0P – Waldheinz
@Waldheinz, Teşekkürler, ben bunu anladım ... bu yüzden benim ... –
"substring()" argümanı "charset =" olmalıdır. "length() + 1' – bigstones
. Eğer Guava kullanıyorsanız, yerine manuel ayrıştırma yapabileceğiniz:
MediaType mediaType = MediaType.parse(httpConnection.getContentType());
Optional<Charset> typeCharset = mediaType.charset();
bu ilgili iplik kimseye yardımcı olabilir: http://stackoverflow.com/questions/9112259/obtaining-response-charset-of-response -to-get-veya-post-request- – Spoonface
Ayrıca iyi bir neden connection.getContentEncoding() null döndürür: http header "Content-encoding" alanını döndürür, ** ** size verilecek değil bir karakter kümesi. Örneğin, alınan veriler sıkıştırılmışsa ve verileri dönüştürmek için kullanabilmeniz için size yol gösterecek şekilde kullanılmalıdır. https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11 – jdarthenay