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

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天,始终找不到原因,

相关推荐

    解决了中文乱码的http的get和post请求demo

    out.writeBytes("param=" + URLEncoder.encode("中文参数", "UTF-8")); out.flush(); out.close(); ``` 对于使用HttpClient的情况,可以创建一个`HttpPost`对象,然后设置`NameValuePair`,并使用`EntityUtils....

    java Socket与C#通信中中文乱码问题的解决方案

    在Java和C#之间进行Socket通信时,遇到中文乱码问题主要是由于编码格式不一致导致的。Java默认使用UTF-8编码,而C#在处理字符串时可能使用其他编码,如GBK或ASCII。为了解决这个问题,我们需要确保两端在发送和接收...

    file_sync.zip

    public static void uploadFileToServer(File file, String serverUrl) throws IOException { HttpURLConnection connection = null; DataOutputStream outputStream = null; FileInputStream inputStream = ...

    Android代码-手机文件上传示例.zip

    public void uploadFile(String serverUrl, String fileName, String filePath) { HttpURLConnection connection = null; try { URL url = new URL(serverUrl); connection = (HttpURLConnection) url.open...

    在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传

    try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { // 写入边界 outputStream.writeBytes(boundaryLine); // 写入图片部分 String disposition = "Content-...

    http post 上传图片 原生

    try (DataOutputStream dos = new DataOutputStream(conn.getOutputStream())) { // 写入文件部分 String contentDisposition = "form-data; name=\"file\"; filename=\"" + fileName + "\""; dos.writeBytes("\r...

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

    在Java的I/O系统中,`DataInputStream`和`DataOutputStream`以及`FilterStream`是处理数据输入和输出的关键类,它们对于程序的文件操作和网络通信起着至关重要的作用。本教程将深入讲解这些类的功能、用法以及它们在...

    Android实现表单上传文件

    DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); // 添加其他参数 for (Map.Entry&lt;String, String&gt; entry : params.entrySet()) { outputStream.writeBytes("\r\n--" + ...

    Android上传多文件到服务器

    try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { for (File file : files) { outputStream.writeBytes("\r\n--" + boundary + "\r\n"); outputStream.writeBytes(...

    安卓实现上传文件

    DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); for (String fileName : fileNames) { File file = new File(fileName); outputStream.writeBytes("\r\n--" + boundary ...

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

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

    JAVA通过HttpURLConnection 上传和下载文件的方法

    public static String uploadFile(String actionUrl, String[] uploadFilePaths) { String end = "\r\n"; String twoHyphens = "--"; String boundary = "*"; DataOutputStream ds = null; InputStream ...

    Java利用HttpURLConnection发送post请求上传文件.docx

    private static void writePart(DataOutputStream dataOutput, String name, String fileName, InputStream fileInput) throws IOException { dataOutput.writeBytes("\r\n------WebKitFormBoundary7MA4YWxkTrZu0...

    Android例子源码root后静默安装卸载应用

    os.writeBytes("pm install -r -t -s /data/local/tmp/yourapk.apk\n"); os.flush(); os.close(); process.waitFor(); ``` 这段代码会请求root权限,然后执行静默安装命令。 4. **处理权限和异常**:在执行...

    Android静默安装Demo

    os.writeBytes("pm install -r -t -S " + apkSize + " " + apkPath + "\n"); os.flush(); os.writeBytes("exit\n"); os.flush(); process.waitFor(); ``` 这段代码首先获取root权限,然后执行安装命令,最后...

    聊天时源程序代码

    dos = new DataOutputStream(s.getOutputStream()); dis = new DataInputStream(s.getInputStream()); } catch (IOException ioe) { System.out.println("连接失败"); ioe.printStackTrace(); } // ...省略...

    java文件操作详细介绍

    - `DataInputStream` 和 `DataOutputStream`:用于读写基本数据类型。 - `BufferedInputStream` 和 `BufferedOutputStream`:提供缓冲功能以提高读写效率。 - `LineNumberInputStream`:提供行号信息。 - `...

    android 静默安装和卸载

    DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("pm install -r " + apkPath + "\n"); os.writeBytes("exit\n"); os.flush(); int exitCode = process.waitFor(); if...

    个人笔记--Java_API

    - `parseInt(String s)`:字符串转整数。 - `toString(int i)`:整数转字符串。 **3.3 Math类** - **常用方法**: - `abs(double a)`:绝对值。 - `max(double a, double b)`:最大值。 - `min(double a, ...

    微信企业号项目

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

Global site tag (gtag.js) - Google Analytics