我è¼å¥从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");
以上所有都给出相同的输出: è¼å¥
因此,请有人能帮助我了解我在做什么错吗?还是请提供其他选择?
任何帮助都感激不尽。谢谢
正如Stephen C很好地解释的那样,我遵循了所有这些步骤,但是几乎不需要其他更改:
1. 正如Stephen C解释的那样,我的服务器正在发送数据,Latin-1 encoding因此我必须使用ISO8859_1 charset
Latin-1
encoding
ISO8859_1
charset
2. 我正在尝试String str = new String(s.getBytes(), "utf-8");
这将不适用于Latin-1 encoded数据!
Latin-1 encoded
所以为此,我必须将charset(针对我的情况 ISO8859_1)数据设置为getBytes(" ISO8859_1")
getBytes(" ISO8859_1")
所以现在工作正常
String str = new String(s.getBytes("ISO-8859-1"), "utf-8");
注意第二个参数是新字符串的字符集,以便it must be utf-8显示原始文本
it must be utf-8