Do zapisu do pliku doc z pakietu MS Office uzywam wlasnie apache POI. I wszystko niby ładnie pięknie ale jesli w stringu mam jakis polski znak to po otworzeniu stworzonego dokumentu tam gdzie były polskie znaki pojawiły sie pytajniki. jesli ten sam tekst wyswietlam w jedicie to polskie znaki sa. Nie wiem czy to wina kodowania i nie potrafie sobie z tym poradzic. Oto kod:

try {           
            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("dane\\wydruk.doc"));
            HWPFDocument doc = new HWPFDocument(fs);

            // centered paragraph with large font size
            Range range = doc.getRange();
            Paragraph par1 = range.insertAfter(new ParagraphProperties(), 0);
            par1.setSpacingAfter(200);
            par1.setJustification((byte) 0);
            // justification: 0=left, 1=center, 2=right, 3=left and right            
            CharacterRun run1 = par1.insertAfter(data.oddzial);
            run1.setFontSize(2 * 18);
            // font size: twice the point size

            // paragraph with bold typeface
            for(int i=0; i<data.przedmioty.size(); i++){
                Paragraph par2 = run1.insertAfter(new ParagraphProperties(), 0);
                par2.setSpacingAfter(200);
                CharacterRun run2 = par2.insertAfter(data.przedmioty.get(i).nazwa);
                run2.setBold(true);
                for(int j=0; j<data.przedmioty.get(i).komu.size(); j++){
                    // paragraph with italic typeface and a line indent in the first line
                    Paragraph par3 = run2.insertAfter(new ParagraphProperties(), 0);
                    par3.setFirstLineIndent(200);
                    par3.setSpacingAfter(200);
                    CharacterRun run3 = par3.insertAfter(data.przedmioty.get(i).komu.get(j));
                    run3.setItalic(true);
                }
            }

            FileOutputStream out = new FileOutputStream(oddzialy[oddzial]+".doc");
            doc.write(out);
            out.close();

        } catch (IOException ex) {}

To co podaje funkcja par1.insertAfter(), par2.insertAfter() i par3.insertAfter() to string, tak uprzedzam pytanie. Spieszy mi sie z tym, wiec jak macie pomysly to piszcie.