kodowanie polskich znaków / java

0

Witam serdecznie,

mam problem z kodowaniem polskich znaków. Pobieram je z pliku Excela, gdzie są zapisane polskie znaki, podczas wykonania wyświetlenia strinaga pojawiają mi się kwadraciki, a kolejne znaki są ucinane. Następnie, gdy je dodaje do bazy danych MS Access pojawia ją się znaki zapytania a dalszych znaków nie ma dalej

podczas połączenia z bazą danych mam ustawione kodowanie na

 Properties props = new Properties();
 props.put("charSet", "Cp1250");

próbowałam tu zmieniać na wszystkie chyba dostępne kodowania, ale i tak nie zmienia wszystkich znaków. Wydaje mi się że powinnam ustawić kodowanie z jave, ale nie wiem jak ...

Moja metoda która czyta i dodaje dane przedstawia się w następujący sposób:

  public void zaladujPlik(Plik plik) {

Workbook plik_c = null;

 int index = 0;
try {
     Connection conn_ola = Connection_ola();

     File infile;
     String pathname = "";
     File fFile = new File("Wybierz plik " + plik + " formatu xls");
     JFileChooser chooser = new JFileChooser();

     chooser.setSelectedFile(fFile);
     chooser.setDialogTitle("Okno wyboru pliku");
     chooser.addChoosableFileFilter((new XLSFilter()));
      if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
         infile = chooser.getSelectedFile();

         if (infile.getAbsolutePath().endsWith(".xls")) {
           pathname = infile.getAbsolutePath();

           plik_c = Workbook.getWorkbook(infile);
           int ilosc_arkuszy = plik_c.getSheets().length;
           for (int ii = 0; ii < ilosc_arkuszy; ii++) {
              try {
                  Sheet arkusz = plik_c.getSheet(ii);
                   for (int i = 4; i < 10; i++) {

                      Cell L_p = arkusz.getCell(0, i);
                      Cell Kolumna_1 = arkusz.getCell(1, i);
                      Cell Kolumna_2 = arkusz.getCell(2, i);

                      String k_L_p = L_p.getContents();
                      String k_Kolumna_1= Kolumna_1.getContents();
                      String k_Kolumna_2 = Kolumna_2.getContents();

                      index++;
                      System.out.println(k_Kolumna_2);
                      sta.executeUpdate("INSERT INTO " + plik + ""
                       + "(            id_" + plik + ",           L_p,            Kolumna_1 ,           Kolumna_2   )"                 
                       + " VALUES (" + index + ",'" + k_L_p + "','" + k_Kolumna_1 + "','" + k_Kolumna_2 + "')");
                      plik_c.close();
                      conn_ola.close();
                      System.out.println("Odczyt zakończony sukcesem.");
                      } catch (Exception e) {
                         e.printStackTrace();
                      }
                   }
               } else {
              }
           }
       } catch (Exception e) {
          e.printStackTrace();
   }
}

jak zamienię metodą

 Kolumna_2.getContents().replace("?","ó") 

zameinia ale nie ma kolejnych znaków.

np tak to wygląda : Krak? -> Krakó

Prosiłabym uprzejmie o wskazówkę ..

1

Tworząc workbook wykorzystaj klasę WorkbookSettings w celu ustawienia kodowania znaków na CP1250 albo UTF-8.

0

wywołuje ten obiekt:

WorkbookSettings ustawienia = new WorkbookSettings();
ustawienia.setLocale(new Locale("utf-8", "UTF-8"));

tylko chyba nie w odpowiednim miejscu. Nie wiem też do którego obiektu przypisać ..

0
plik_c = Workbook.getWorkbook(infile,ustawienia);
0

ehh nie działa :( :(:

WorkbookSettings ustawienia = new WorkbookSettings(); 
ustawienia.setLocale(new Locale("cp1250", "Cp1250")); 
plik_c = Workbook.getWorkbook(infile,ustawienia); 
int ilosc_arkuszy = plik_c.getSheets().length;
3

new Locale("cp1250", "Cp1250")

Tu jest na pewno zle. Locale bierze jezyk, moze kraj, i moze 'variant' np. new Locale("pl", "PL") czy inne. Nie ma w tej sytuacji zadnego zwiazku z kodownaiem.

WorkbookSettings.setEncoding - tego szukasz

0

dziękuje chodziło właśnie o to:

ustawienia.setEncoding("Cp1250");

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0