如何让程序产生的乱码正确显示?

smart_zcg 2003-08-24 04:27:14
我的程序中为什么能正常显示英文字符,但要显示中文是就成了乱码?请高手给指点一下。
...全文
47 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihyuen 2003-08-27
  • 打赏
  • 举报
回复
出现乱码主要是ZipInputStream 中的getUTF8String(byte[] b, int off, int len)函数的问题,将这个函数中的所以代码注释掉,直接返回参数中的字节码组成的字符串就可以了。你可以将修改后的ZipInputStream 添加到jdk相应的包中或者把相关的类一并提取出来作为自己的类使用。
smart_zcg 2003-08-27
  • 打赏
  • 举报
回复
楼上仁兄的可以说得具体些吗?感谢帮忙!!
ihyuen 2003-08-27
  • 打赏
  • 举报
回复
不好意思,昨天匆忙中输入错了,应该是ZipInputStream 类中的问题导致了乱码错误。所以的解决方案都是对ZipInputStream 类进行修改。
ihyuen 2003-08-26
  • 打赏
  • 举报
回复
FileOutputStream中将中文文件名按字节进行了UTF-8编码,读出来当然是乱码了,解决办法或者修改jdk中的源代码,把修改后的java文件编译后放到jdk中,或者写一个自己的FileOutputStream替代jdk中的。
smart_zcg 2003-08-26
  • 打赏
  • 举报
回复
up
smart_zcg 2003-08-25
  • 打赏
  • 举报
回复
我的程序具体是这样的,这是一个压缩的文件的程序,但是解压缩了就成了乱码,请高手指点程序是:
package com.guanda.oa.util;

import java.util.zip.*;
import java.io.*;
import java.util.*;

public class CompressT
{
public CompressT()
{}

public static void main(String[] args)
{

CompressT.UnZipFile("e:\\testzip\\test.zip");
}

public static void UnZipFile(String filename)
{
int BUFFER = 1024*10;
try
{
BufferedOutputStream bos = null;
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
ZipInputStream zis = new ZipInputStream(bis);

int count;
ZipEntry entry;

while ( (entry = zis.getNextEntry()) != null)
{
FileOutputStream fos = new FileOutputStream(entry.getName());
bos = new BufferedOutputStream(fos, BUFFER);
byte data[] = new byte[BUFFER];
while ( (count = zis.read(data, 0, BUFFER)) != -1)
{
bos.write(data, 0, BUFFER);
}
}
//bos.close();
//zis.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}

}
WorldCreater 2003-08-24
  • 打赏
  • 举报
回复
JSP?

不过就是java也一样,你重新给字符串编码就成了。
String dest = new String(src.getBytes("ISO-8859-1"), "UTF8");

62,614

社区成员

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

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