如何/无法将乱码/奇怪的文本转换为utf-8 android(java)?

Tar*_*ngh 4 java android character-encoding

我有乱码文本è¼å¥,这是从MySql获取的Web服务(php)返回的

现在我正在尝试将其解码为android中的utf-8,但它无法正常工作

我试过了:

String s = "è¼å¥";// text returned by web service taking it as static for testing
Run Code Online (Sandbox Code Playgroud)

1.不工作:

String str = new String(s.getBytes(), "utf-8");
Run Code Online (Sandbox Code Playgroud)

2.不工作:

String normalized = Normalizer.normalize(str, Normalizer.Form.NFD);
// also tried NFC, NFKC, NFKD
// also tested by isNormalized its returning true 
Run Code Online (Sandbox Code Playgroud)

3.不工作:

String str =URLDecoder.decode(s, "utf-8");
Run Code Online (Sandbox Code Playgroud)

以上都给出了相同的输出: è¼å¥

所以,请任何人帮助我理解我做错了什么?或者请提供任何替代方案?

任何帮助都感激不尽.谢谢

Tar*_*ngh 8

正如斯蒂芬C解释得非常好,我遵循了所有这些步骤,但几乎不需要进行其他更改:

1.斯蒂芬ç解释我的服务器在发送数据Latin-1 encoding,所以我不得不使用ISO8859_1 charset

2.我试图String str = new String(s.getBytes(), "utf-8");

这不适用于Latin-1 encoded数据!

所以为此,我必须设置charset(对于我的情况 ISO8859_1)数据getBytes(" ISO8859_1")

所以现在工作正常

String str = new String(s.getBytes("ISO-8859-1"), "utf-8");
Run Code Online (Sandbox Code Playgroud)

注意第二个参数是针对新字符串的字符集,以便it must be utf-8显示原始文本