编码为 UTF-8。编码字符例如。 ö 至 ¶

Encode to UTF-8. Encode character eg. ö to ö

我想将 Android 中的字符串编码为 UTF-8。例如这个字符串:

Grüne Ähren beißen Flöhe

Grüne Ãhren beiÃen Flöhe

但无论我做什么,我都会将 ü 编码为 ü 或将 ü 编码为 %C3%BC(在线通常称为 'raw URL encode')。

找到转换为 byte[] 或 URI.toASCIIString() 的解决方案。但是他们中没有一个对我有用。

更新

我正在加入 eBay 合作伙伴网络并尝试将搜索词连接到我的合作伙伴 url。 eBay 的人必须使用错误的字符集,因为 UTF-8 URL 编码的字符串不起作用。

使用 UTF-8 URL 编码的搜索词

(Grüne Ähren beißen Flöhe

Gr%C3%BCne%20%C3%84hren%20bei%C3%9Fen%20Fl%C3%B6he)

在 eBay 搜索框中出现此结果:

如果我用 ISO_8859_1 对我的搜索词进行编码,它就可以工作 (Grüne Ãhren beiÃen Flöhe):

非常感谢社区

您本质上想要的是根据 UTF-8 将字符串转换为其字节表示形式,并使用不同的字符集解释这些字节,例如 ISO-8859-1.

这通常是许多问题的原因。您想故意做大多数开发人员做错的事情(或者他们只是忽略字符集的问题)。

因为你只需要它来工作,使用这段代码:

byte[] bytes = "Grüne Ähren beißen Flöhe".getBytes("UTF-8");
String result = new String(bytes, "ISO-8859-1");

在工作中看到它 here