解析时的土耳其字符问题(Android)

时间:2012-06-12 12:30:18

标签: android utf-8 html-parsing

我正在解析html内容并在屏幕上输出。这个网站有土耳其字符,如çÇşŞöÖğĞıİüÜ。我无法将它们显示为正确的字符,但它们仍然打印为问号。

Eclipse - >项目 - >属性 - >资源 - >文本文件编码=从容器继承(Cp1254)

我在网上搜索并找到了这个解决方案:

Eclipse - >项目 - >属性 - >资源 - >文本文件编码=其他:UTF-8

然而,它不起作用。它只会更改我文件的当前字符。 (我的活动中有这些角色的标题)

有任何帮助吗?提前谢谢......

2 个答案:

答案 0 :(得分:0)

这完全取决于你如何将html解析为内存。如果您从具有扫描仪类的文件中检索它,并且html文件保存为utf-8,那么请执行以下操作:

Scanner scanner = new Scanner(file, "UTF-8");

如果您使用org.apache.http包从网上阅读,并将内容作为HttpEntity - 对象,请执行以下操作:

String content = EntityUtils.toString(httpEntity, "UTF-8");

即。这一切都取决于你如何阅读html文件。通常,您可以在创建阅读器时指定编码。您必须将此与保存文件的编码相匹配。

答案 1 :(得分:0)

好的,我终于找到了一个真正的解决方案。根据您解析的位置(我从charset = iso-8859-9和Eclipse上检索数据,使用utf-8),您应该进行char替换操作。对于我的情况,

    context = context.replaceAll("İ", "İ");
    context = context.replaceAll("ı", "ı");
    context = context.replaceAll("Ö", "Ö");
    context = context.replaceAll("ö", "ö");
    context = context.replaceAll("Ü", "Ü");
    context = context.replaceAll("ü", "ü");
    context = context.replaceAll("Ç", "Ç");
    context = context.replaceAll("ç", "ç");
    context = context.replaceAll("Ğ", "Ğ");
    context = context.replaceAll("ğ", "ğ");
    context = context.replaceAll("Ş", "Ş");
    context = context.replaceAll("ş", "ş");

其中context是一个String,它包含所有已解析的数据,并将在TextView上打印出来。就这样。我以前应该想到很多!