S
Smoovie
Gast
Hallo liebe Forum-Gemeinde!
Ich hab eine Postgre DB wo ich Pfade einlese. Die DB ist als UTF8 angelegt. Sowohl pgAdmin als auch das JTable wo ich die Pfade anzeige zeigt die Umlaute korrekt an.
Wenn ich aber mit Drag and Drop den Pfad nach winamp einlese erhalte ich statt eines Ü nur Ãœ und statt eines Ä nur cÄ usw.. Für Pfade ohne Sonderzeichen funktioniert das Droppen einwandfrei.
Soweit ich bisher festgestellt habe liegt das irgendwie am Encoding der Sonderzeichen, also hab ich mir aus der API den UTF8 converter genommen und versucht alle Pfade die gedroppt werden vorher ins passende Format zu bringen. Aber egal welche Kombination aus UTF8, UTF-8, CP1252,windows-1252, ISOxx-1/15 ich kombiniere, immer werden die Umlaute in Winamp falsch dargestellt. Lass ich parallel die konvertierten Pfade im IDE Terminal ausgeben, (also wenn ich nen Pfad ins Winamp schiebe lass ich den grad kopierten String ins Terminal schreiben, das sollte doch der gleiche sein der dann auch im Winamp landet?) werden die Namen aber korrekt angezeigt.
Ich nutze NetBeans IDE 7.1.2 mit UTF-8 encoding auf Windows XP
Hier noch bisschen Code der hoffentlich hilft^^. Bin noch recht frisch beim Programmieren, also bitte habt Nachsicht wenn der Code nicht ganz der "Norm" entspricht
Die Drag and Drop Klassen:
Ich bin für jede Hilfe dankbar =)
Gruß
Smoovie
Ich hab eine Postgre DB wo ich Pfade einlese. Die DB ist als UTF8 angelegt. Sowohl pgAdmin als auch das JTable wo ich die Pfade anzeige zeigt die Umlaute korrekt an.
Wenn ich aber mit Drag and Drop den Pfad nach winamp einlese erhalte ich statt eines Ü nur Ãœ und statt eines Ä nur cÄ usw.. Für Pfade ohne Sonderzeichen funktioniert das Droppen einwandfrei.
Soweit ich bisher festgestellt habe liegt das irgendwie am Encoding der Sonderzeichen, also hab ich mir aus der API den UTF8 converter genommen und versucht alle Pfade die gedroppt werden vorher ins passende Format zu bringen. Aber egal welche Kombination aus UTF8, UTF-8, CP1252,windows-1252, ISOxx-1/15 ich kombiniere, immer werden die Umlaute in Winamp falsch dargestellt. Lass ich parallel die konvertierten Pfade im IDE Terminal ausgeben, (also wenn ich nen Pfad ins Winamp schiebe lass ich den grad kopierten String ins Terminal schreiben, das sollte doch der gleiche sein der dann auch im Winamp landet?) werden die Namen aber korrekt angezeigt.
Ich nutze NetBeans IDE 7.1.2 mit UTF-8 encoding auf Windows XP
Hier noch bisschen Code der hoffentlich hilft^^. Bin noch recht frisch beim Programmieren, also bitte habt Nachsicht wenn der Code nicht ganz der "Norm" entspricht
Java:
OutputStreamWriter out = new OutputStreamWriter(new ByteArrayOutputStream());
System.out.println(out.getEncoding());
liefert UTF8
System.out.println(System.getProperty("file.encoding"));
liefert UTF-8
System.out.println(Charset.defaultCharset());
liefert UTF-8
Die Drag and Drop Klassen:
Java:
package main.java;
import java.awt.datatransfer.Transferable;
import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.TransferHandler;
public class DnDTransferHandler extends TransferHandler{
private JTable table;
@Override
public int getSourceActions(JComponent comp) {
return COPY;
}
@Override
public Transferable createTransferable(JComponent c)
{
this.table = (JTable) c;
int[] values = table.getSelectedRows();
ArrayList files = new ArrayList();
for(int i=0; i<table.getSelectedRowCount(); i++) //hier stehen die makierten Pfade drin
{
System.out.println((String)table.getValueAt(values[i], (table.getColumnCount())-1));
files.add((String)table.getValueAt(values[i], (table.getColumnCount())-1));
}
DnDTransferableFile tf = new DnDTransferableFile(files);
return tf;
}
}
Java:
package main.java;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.UnsupportedEncodingException;
import java.util.List;
public class DnDTransferableFile implements Transferable{
private List fileList;
public DnDTransferableFile(List files)
{
fileList = files;
}
@Override
public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException
{
if( flavor.equals(DataFlavor.javaFileListFlavor) )
{
try {
for(int i = 0; i < this.fileList.size();i++){
byte[] utf8Bytes = ((String)this.fileList.get(i)).getBytes("UTF8");
String Convert = new String(utf8Bytes, "UTF-8");
fileList.set(i, Convert);
System.out.println(fileList.get(i));
}
}
catch (UnsupportedEncodingException e) {
//compiler empfiehlt hier nichts machen wegen throwable
}
}
return fileList;
}
@Override
public DataFlavor[] getTransferDataFlavors()
{
return new DataFlavor[] {DataFlavor.javaFileListFlavor} ;
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor)
{
return flavor.equals(DataFlavor.javaFileListFlavor) ;
}
}
Ich bin für jede Hilfe dankbar =)
Gruß
Smoovie