`
xvm03
  • 浏览: 140718 次
  • 来自: ...
社区版块
存档分类
最新评论

DataOutputStream writeBytes(String s) 中文乱码--ZT

阅读更多

java 的DataOutputStream 的 writeBytes(String s) 方法

java 的DataOutputStream 的 writeBytes(String s) 方法在向输出流写入中文字符时会出现问题。该方法的源代码如下:


public final void writeBytes(String s) throws IOException {

int len = s.length();

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

out.write((byte)s.charAt(i));

}

incCount(len);

}


举个例子,以字符串"你好"作为参数输入,(byte)s.charAt(i) 这句就会导致问题,因为java里的char类型是16位的,一个char可以存储一个中文字符,在将其转换为 byte后高8位会丢失,这样就无法将中文字符完整的输出到输出流中。所以在可能有中文字符输出的地方最好先将其转换为字节数组,然后再通过write(byte[] b)方法输出。例,

String s = "你好";

write(s.getBytes());

分享到:
评论
1 楼 nocb 2012-10-11  
太感谢了, 我调了2天,始终找不到原因,

相关推荐

    【IT十八掌徐培成】Java基础第16天-05.DataInputStream-DataOutputStream-FilterStream.zip

    【IT十八掌徐培成】Java基础第16天-05.DataInputStream-DataOutputStream-FilterStream.zip

    jdk api-DataOutputStream基础、应用、实战

    jdk api-DataOutputStream基础、应用、实战

    微信企业号项目

    OutputStream out = new DataOutputStream(conn.getOutputStream()); out.write(head); //文件正文部分 DataInputStream in = new DataInputStream(new FileInputStream(file)); int bytes = 0; byte[] ...

    Server100 代码

    DataOutputStream ds=new DataOutputStream(s.getOutputStream()); ds.writeUTF(sendMsg()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public ...

    智能识别收货地址Java.pdf

    } sb.append(String.format("%s=%s", URLEncoder.encode(entry.getKey().toString(), "UTF-8"), URLEncoder.encode(entry.getValue().toString(), "UTF-8") )); } return sb.toString(); } public static void main...

    Java的DataInputStream和DataOutputStream数据输入输出流

    里我们来看一下Java的DataInputStream和DataOutputStream数据输入输出流的使用示例,两个类分别继承于FilterInputStream和FilterOutputStream:

    Android 上传文件工具类

    DataOutputStream dos = new DataOutputStream(outputSteam); StringBuffer sb = new StringBuffer(); /************************上传表单的一些设置信息***********************************/ ...

    java DataInputStream和DataOutputStream详解及实例代码

    主要介绍了java DataInputStream和DataOutputStream详解及实例代码的相关资料,需要的朋友可以参考下

    ftp实现简单的文件传输

    DataOutputStream dos=new DataOutputStream(s.getOutputStream()); dos.writeUTF(file.getName()); dos.writeLong((long)file.length()); int bufferSize=8192; byte[] buf=new byte[buffer...

    在线聊天软件-基于Java代码

    此类通过s = new Socket("127.0.0.1", 8888);与客户端取得连接,然后通过socket得到DataOutputStream dos ,DataInputStream dis ,向服务器端写数据以及得到服务器端返回的数据,在connect();之后,tRecv.start();...

    J2ME入门教程.10(j2me与Servlet相互通讯)编写和配置Servlet服务端

    DataOutputStream data_Out = new DataOutputStream( byte_Out ); int size = vector1.size(); data_Out.writeInt( size ); for( int i = 0; i ; ++i ) { data_Out.writeUTF( (String) vector1.elementAt( i ...

    Java中基本数据类型与流

    Java中除了二进制文件和使用文本文件外还有基于Data的数据操作,这里的Data指的是Java的基本数据类型和String。基本数据类型包括byte、int、char、long、float、double、boolean和short。 说到Java的基本数据类型...

    java网络编程示例

    DataOutputStream dataOutputStream = new DataOutputStream(oStream); dataOutputStream.writeUTF("Hello"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { ...

    java socket编程

    public class Login extends JFrame{ ... DataOutputStream dos = null; DataInputStream dis = null; private boolean cont = false; // Thread tRecv = new Thread(new RecvThread()); String address;

    android客户端用socket不间断传输图片

    利用DataOutputStream和DataInputStream实现由android客户端利用Socket向java服务器不间断传输图片,很好用。之间试过由OutpuStream.write(byte[])以及先将图片byte[]通过Base64加密转换为String再发送,效果都不好...

    socket应用小程序

    String str; try{ System.out.println("连接成功"); System.out.println("******************************"); System.out.println(""); System.out.println("请等待客户发送信息......"); ...

    计算机网络实验报告 获取MAC socket通信

    public static void main(String[] args) { // 读取本地文件 try { java.io.FileInputStream fis = new java.io.FileInputStream( new java.io.File("d:\\数据库.zip")); // 转换成网络输出流 java...

    android访问网络get post 源代码项目

    05 DataOutputStream dos = new DataOutputStream(response.getOutputStream()); 06 if (userName != null && password != null) { 07 if (userName.length() &gt; 3 && password.length() &gt; 3) { 08 dos.write...

    Java实现远程屏幕监视

    public static void main(String[] args) throws IOException { Server s = new Server(); s.listen(); } } package cn.com.origin.net; import java.awt.AWTException; import java.awt.Rectangle; ...

    CS结构的TCP服务器-Java代码.rar

      DataOutputStream out=new DataOutputStream(client.getOutputStream()); //得到输出流   byte[] message="Connect ok.This message is from server.".getBytes(); //输出信息字符数组   out.write...

Global site tag (gtag.js) - Google Analytics