[英]How to encode cyrillic symbols in HTTP-requests in Java?
美好時光! 我的Adroid應用程序對Google的其中一個API服務執行HTTP請求。 當然,它的工作原理,當英語請求的參數,但當我用西里爾語測試我的功能 - 我得到400錯誤。 似乎是,問題是將Win-1251字符串編碼為UTF-8?如何在Java中完成?
嘗試:
URLEncoder.encode(yourString, HTTP.UTF-8);
您應該使用URLEncoder#encode()
來編碼請求參數。
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的內置HttpClient
API時,您不需要這樣做。
Java中的所有String
對象都編碼為Unicode(UTF-16),Unicode包含來自Windows-1251字符集的字符。
例如,“Česká”是“\\ u010Cesk \\ u00E1”。
如果要使用不同的字符集將此字符串發送到其他軟件,則需要使用類CharsetEncoder
將字符串轉換為該字符集中的字節,或者使用類OutputStreamWriter
並傳遞Charset
。
如果從不同字符集中的其他軟件接收字符串,則使用CharsetDecoder
類或帶有Charset
InputStreamReader
將其轉換為Unicode。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.