create zip files with arabic characters

ε祈祈猫儿з 提交于 2019-12-11 09:36:29

问题


i have the following situation i have to modify an existing files and return a zip containing this modified files , i'm in web application context what i done up to now is :

///////////////// modifying the existing file with poi librairy 
    FileInputStream inpoi = new   FileInputStream("file_path");
                POIFSFileSystem fs = new POIFSFileSystem(inpoi);
                HWPFDocument doc = new HWPFDocument(fs);
                Range r = doc.getRange();
                r.replaceText("<nomPrenom>","test"); 
               byte[] b =   doc.getDataStream();

//////////////////////// create the zip file and copy the modified files into it 
ZipOutputStream out = new ZipOutputStream(new FileOutputStream("my.zip"));
out.putNextEntry(new ZipEntry("file"));
for (int j = 0; j < b.length; j++) {
                out.write(b[j]);
              } 

the created zipped file can't be read correctly with word given that the original file is wrotten in arabic

i tried to this :

 try {
                 FileInputStream inpoi = new FileInputStream("C:\\Users\\free\\Desktop\\myworkspace\\gestionRH\\WebRoot\\fiches\\blame.doc");
                    POIFSFileSystem fs = new POIFSFileSystem(inpoi);
                    HWPFDocument doc = new HWPFDocument(fs);
                    Range r = doc.getRange();
                    r.replaceText("<nomPrenom>","test"); 
                  byte[] stream=   doc.getDataStream();
                  String encoding = "utf-16";
                  ZipOutputStream out = new ZipOutputStream(new FileOutputStream("yyy.zip"));
                   ZipEntry zipEntry = new ZipEntry("file.doc");
                   OutputStreamWriter writer = new OutputStreamWriter(out,"utf-8");
                    out.putNextEntry(zipEntry);
                    for (int j = 0; j < stream.length; j++) {
                        writer.write(stream[j]);  
                  }
                  writer.close();
                } catch (IOException e) {
                  System.out.println(e.toString());
                }

it doesn't work


回答1:


There was an old bug in java zip implementation. It should be fixed in v7. http://bugs.sun.com/view_bug.do?bug_id=4244499




回答2:


You may also want to use apache commons-io FileUtils offer alot of handy methods for Java File operation - reading and writing files etc...

The read and write Methods also have an encoding parameters.

http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html

ZipFile allows you to set the proper encoding.

ZipFile(String name, String encoding) Opens the given file for reading, assuming the specified encoding for file names, scanning unicode extra fields.



来源:https://stackoverflow.com/questions/12598424/create-zip-files-with-arabic-characters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!