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

标签 java android character-encoding

我从 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/

相关文章:

java - 服务器没有 wsdl epr 的 epr - Axis2

android - 什么是平均。移动应用程序的最佳连接超时?

java - Gradle 无法加载 Google playServicesVersion

MySQL 阿拉伯字符编码

php - 编码奇数 HTML 实体 '&lstroke;'

Java 类型推断 : reference is ambiguous in Java 8, 但不是 Java 7

java - 错误: cannot find symbol variable toolbar

java - 频繁的 Netbeans 卡住

android - 为什么我们使用 Base View 和 Base Presenter 来实现 MVP 模式?

c# - 检测c#中的特殊符号