簡體   English   中英

如何在Java中的HTTP請求中編碼西里爾符號?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM