解决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控件。成功解决局部乱码,完毕。
按照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控件。成功解决局部乱码,完毕。
相关文章推荐
- Java读取properties配置文件时,中文乱码解决方法
- Java读取properties配置文件时,中文乱码解决方法
- Java读取properties配置文件时,中文乱码解决方法
- Java读取properties配置文件时,中文乱码解决方法
- java读取*.properties配置文件时,中文乱码解决方法
- Java读取properties配置文件时,中文乱码解决方法
- Java读取properties配置文件时,中文乱码解决方法
- Java读取properties文件中文乱码问题解决
- java读取.properties文件及解决中文乱码问题
- 解决Java读取properties文件中文乱码的问题
- Android读取xxx.properties配置文件中文出现乱码解决方法
- Eclipse中properties文件读取时中文乱码、指定更新、写入中文变unicode码的解决方法
- Java读取properties文件中文乱码问题解决
- php读取xml中文乱码解决方法
- Java读properties文件中文乱码问题的解决方法
- php 读取xml的方法 (iconv解决中文乱码问题)
- Java读取中文文件出现乱码解决方法
- Java读取properties文件中文乱码问题解决
- ResourceBundle (读取properties文件及中文乱码解决方法)
- tinyxml读取中文时显示乱码的解决方法