我想在Android中将字元串編碼為UTF-8.例如,以下字元串:
Grüne Ähren beißen Flöhe
至
Grüne Ãhren beiÃen Flöhe
但是無論我做什麼,我都會将ü編碼為ü或将ü編碼為ü(通常稱為“原始URL編碼”線上).
找到了轉換為byte []或URI.toASCIIString()的解決方案.但是他們都不為我工作.
更新
我正在參加eBay合作夥伴網絡,并嘗試在我的合作夥伴網址中添加一個搜尋詞.
eBay的人員必須使用錯誤的字元集,因為UTF-8 URL編碼的字元串不起作用.
具有UTF-8 URL編碼的搜尋詞
(GrüneÄhrenbeißenFlöhe
至
GrüneÄhrenbeißenFlöhe)
在eBay搜尋框中顯示以下結果:
如果我使用ISO_8859_1編碼我的搜尋字詞,則它可以正常工作(GrüneÃhrenbeiÃenFlöhe):
非常感謝社群
解決方法:
您本質上想要的是根據UTF-8将String轉換為其位元組表示形式,并使用其他字元集(例如ISO-8859-1)解釋這些位元組.
這通常是許多問題的原因.您想故意做大多數開發人員做錯的事情(或者他們隻是忽略字元集的問題).
由于您隻需要這樣做即可,請使用以下代碼:
byte[] bytes = "Grüne Ähren beißen Flöhe".getBytes("UTF-8");
String result = new String(bytes, "ISO-8859-1");
看到它在工作here.
标簽:encoding,utf-8,urlencode,java,android
來源: https://codeday.me/bug/20191108/2005376.html