Java를 사용하여 압축 파일을 생성합니다. 문자가 깨져 나타나는 곳이 두 군데 있습니다. (권장: java 기본 튜토리얼)
1. 콘텐츠에서 한자가 깨져 나오는 문제. 인터넷에서는 두 가지 유형의 솔루션을 제공합니다. sun의 소스 코드를 수정하고, 오픈 소스 클래스 라이브러리인 org.apache.tools.zip.ZipOutputStream과 org.apache.tools.zip.ZipEntry를 사용합니다. ant.jar을 다운로드하여 사용할 수 있습니다. 후자를 선택하는 것이 더 편리하다는 것은 의심의 여지가 없습니다.
2. 압축 파일 주석의 중국어 문자 깨짐 문제: zos.setComment("중국어 테스트") 이 문제를 오랫동안 온라인에서 확인했는데 설명하는 사람이 없어서 방법을 찾아야 했습니다. 스스로 해결하기 위해.
자체 컴퓨터에서 프로젝트로 만든 테스트 클래스에는 문제가 없었는데, 회사 프로젝트에서 사용하면 글자가 계속 깨지는 현상이 발생했습니다. 인코딩 설정 방법(zos.setEncoding(")을 사용해서 드디어 문제가 발견되었습니다. gbk");). 테스트 프로젝트의 인코딩 방식은 gbk이고 회사 프로젝트의 기본 인코딩은 utf-8이므로 테스트 프로젝트에는 문제가 없지만 회사 프로젝트에는 문제가 있습니다.
org.apache.tools.zip.ZipOutputStream은 기본적으로 프로젝트의 인코딩 방식을 사용합니다. 이론적으로 말하면 utf-8은 중국어도 지원하는데 왜 여전히 왜곡되는지 알 수 없습니다. setEncoding 메소드를 gbk로 설정합니다.
첨부된 파일을 압축하는 코드입니다
package com.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; public class CompressEncodingTest { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { File f = new File("中文测试.txt"); ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream("zipTest.zip"), 1024)); zos.putNextEntry(new ZipEntry("中国人.txt")); DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream(f))); zos.putNextEntry(new ZipEntry(f.getName())); int c; while ((c = dis.read()) != -1) { zos.write(c); } zos.setEncoding("gbk"); zos.setComment("中文测试"); zos.closeEntry(); zos.close(); } }
위 내용은 Java에서 문자가 왜곡된 압축 압축 솔루션(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!