作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我从 MySql 获取的网络服务 (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
字符集
2. 我正在尝试 String str = new String(s.getBytes(), "utf-8");
这不适用于 Latin-1 编码
数据!
为此,我必须将数据的charset
(对于我的情况ISO8859_1
)设置为getBytes("ISO8859_1")
现在一切正常
String str = new String(s.getBytes("ISO-8859-1"), "utf-8");
注意第二个参数是新字符串的字符集,所以必须是utf-8
才能显示原文
关于java - 如何/无法将乱码/奇怪的文本转换为 utf-8 android (java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18285775/
我是一名优秀的程序员,十分优秀!