您的位置:首页 > 编程语言 > Java开发

解决JAVA,properties loadFromXML读取中文XML乱码的方法

2014-04-13 08:51 1261 查看
环境:服务端编码 “gb2312" ;客户端  andriod 4.2.1;

按照SUN的格式,在服务器端输出对应模板的XML如下(省略头),

<properties>

  <entry key="ID">2768</entry>

  <entry key="pageID">16</entry>

  <entry key="tilel">关于申报2014年政府专项资金购买社会组织服务项目的通知</entry>

  <entry key="click0">97</entry>

  <entry key="source">社会办</entry>

......

</properties>

通过:InputStreamReader inputStreamReader = new InputStreamReader( httpURLConnection.getInputStream(), "gb2312");

在手机端还原”gb2312"编码XML字节流正常,但通过properties loadFromXML建立MAP后,读取中文键值出现零星乱码,找不着规律。

由于学习JAVA时间太短找不到底层原因,无奈之下,编写了替代读取XML到MAP的转换函数:

public static void loadStringXML(string   resultDataString   ) {

  String string = resultDataString;//XML流字符串。

  String startstrString = "<entry key=\"";

  String endstr = "</entry>";

  int[] start = new int[1024];//长度取决于由服务端条目数据量 下同

  int[] end = new int[1024];

  String[] str = new String[1024];

  String[] strkey = new String[1024];

  String[] strvalue = new String[1024];

  int count = 0;// 记录切割次数

  int index = string.length();

//分两次切割: 首先entry字符串组;

  for (int i = 0; i < 1024; i++) {

   if ((end[i] = string.lastIndexOf(endstr, index)) != -1) {

    start[i] = string.lastIndexOf(startstrString, index);

    str[i] = string.substring(start[i] + 12, end[i]);

    index = start[i] - 2;

    // System.out.println(str[i]);

    count++;

   } else {

    break;

   }

  }

// 二次分割出Key,Value;

  for (int j = 0; j < count; j++) {

   int k = 0;

   k = str[j].indexOf("\">");

   strkey[j] = str[j].substring(0, k);

   strvalue[j] = str[j].substring(k + 2);

   pxml.put(strkey[j], strvalue[j]);//pxml :外部定义的静态MAP接收对象 

  }

  }

再次调用pxml键值显示在手机Text.View控件。成功解决局部乱码,完毕。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  乱码 手机 xml map java