天天看點

java中字元編碼為utf-8,java-編碼為UTF-8.編碼字元,例如ö至ö

我想在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搜尋框中顯示以下結果:

java中字元編碼為utf-8,java-編碼為UTF-8.編碼字元,例如ö至ö

如果我使用ISO_8859_1編碼我的搜尋字詞,則它可以正常工作(GrüneÃhrenbeiÃenFlöhe):

java中字元編碼為utf-8,java-編碼為UTF-8.編碼字元,例如ö至ö

非常感謝社群

解決方法:

您本質上想要的是根據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