小编典典

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

java

è¼å¥从MySql提取的Web服务(php)返回的文本乱码

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

我努力了:

String s = "è¼å¥";// text returned by web service taking it as static for testing

1. 不工作:

String str = new String(s.getBytes(), "utf-8");

2. 不工作:

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

3. 不工作:

String str =URLDecoder.decode(s, "utf-8");

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

因此,请有人能帮助我了解我在做什么错吗?还是请提供其他选择?

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


阅读 221

收藏
2020-11-26

共1个答案

小编典典

正如Stephen C很好地解释的那样,我遵循了所有这些步骤,但是几乎不需要其他更改:

1. 正如Stephen C解释的那样,我的服务器正在发送数据,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");

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

2020-11-26