网络传输xml 中文乱码问题

ndzj981479673 2010-11-17 07:12:28
rt

想要向客户端传输xml文档,但是其中有中文,于是就bug了

简略代码如下:

客户端:
//发送
System.out.println(stringbuffer.toString() );//发请求
DataOutputStream dataOut = new DataOutputStream(con.getOutputStream());
dataOut.writeUTF(stringbuffer.toString() );//
dataOut.flush();
dataOut.close();

//获取服务器端返回信息

in = new DataInputStream(con.getInputStream());
String value = in.readUTF();
System.out.println(value);

服务器:
//接受请求
DataInputStream in = new DataInputStream(req.getInputStream());
String stringValue = in.readUTF();
//发送filename对应的xml内容
Filename filename = new Filename("a.xml");
InputStream in2 = new FileInputStream(filename);
byte[]b = new byte[in2.available()];
in2.read(b);
String a = new String(b);
//服务器向客户端发信息
DataOutputStream dataOut = new DataOutputStream(resp.getOutputStream());
dataOut.writeUTF(a);//stringbuffer.toString()
dataOut.flush();
dataOut.close();

关键是编码的问题,可是参考了网络很多建议都不行(utf-8传输,"ISO-8859-1",gb2312)

希望大牛们不吝赐教,感激不尽~~~

希望写一下简单代码,O(∩_∩)0
...全文
460 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ndzj981479673 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chooseforget 的回复:]
结贴了?? 只传了一半的问题。我觉得是不是在哪个地方read了两次。 如果只有偶数项的话,很可能第一次read的时候没有写,只写了第二次read的。 楼主检查一下。
[/Quote]

好吧,我承认是我判断文件流是否空时,写了readline()==null,然后再次String=readline(),然后就隔行读写了
chooseforget 2010-11-23
  • 打赏
  • 举报
回复
结贴了?? 只传了一半的问题。我觉得是不是在哪个地方read了两次。 如果只有偶数项的话,很可能第一次read的时候没有写,只写了第二次read的。 楼主检查一下。
ndzj981479673 2010-11-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 huntor 的回复:]
看看代码中是不是有循环、其中跳过了一次。
[/Quote]

没有循环~~
huntor 2010-11-18
  • 打赏
  • 举报
回复
看看代码中是不是有循环、其中跳过了一次。
ndzj981479673 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yetaodiao 的回复:]
解决XML HTTP提交过时返回是乱码的问题
[/Quote]

谢谢~~~

还有一个问题,问什么我的xml文档只传了一半啊?只有偶数项(2,4,6)的,没有奇数项(1,3,5)的

很囧~~~
ndzj981479673 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chooseforget 的回复:]
Java code

String a = new String(b); // 在下认为这句代码很有嫌疑
[/Quote]

谢谢楼上,我2了。。。。

还有一个问题,问什么我的xml文档只传了一半啊?只有偶数项(2,4,6)的,没有奇数项(1,3,5)的

很囧~~~
chooseforget 2010-11-18
  • 打赏
  • 举报
回复

String a = new String(b); // 在下认为这句代码很有嫌疑
qxq198407 2010-11-18
  • 打赏
  • 举报
回复
解决编码问题就可以
houjin_cn 2010-11-18
  • 打赏
  • 举报
回复
很显然是服务端有问题:
这行 String a = new String(b);//没有指定编码, 就用了默认的, 这样不行
如果你是GBK编码, 就用String a = new String(b,"GBK"); 其它编码参考修改

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧