Hallo,
ich habe folgendes Problem, ich habe einen Java-client, welcher Eigennamen und Nachnamen in eine mysql Datenbank schreibt.
Innerhalb meines Programmes benutze ich nur latin-1.
Momentan jage ich alles durch nen gebastelten Encoder
So in der Art halt,.. der ServerConnector sieht so aus
Wie man oben sehen kann wird alles per Hand umencodiert.
Ich habe mir überlegt, dass es da eigentlich irgendwas fertiges geben müsste, weil das ein Leerzeichen ein %20 wird, woher kommt das nochmal?
Also letzendlich haben sehr viele Leute das Problem, dass man nur ASCII übers Netz übertragen kann. Ich hab wenig Lust mir alle möglichen europäischen Sonderzeichen rauszusuchen und dann für jedes irgendeine Maskierung zu überlegen, ich denke das ist verständlich.
Ich hab da auch schon mit getBytes rumgefummelt und verschiedenen Charsets, aber eigentlich gehts ja um latin-1 => ASCII und wieder zurück....
Ich hoffe mir kann jmd von euch helfen, sonst muss ich es halt doch manuell mir überlegen.
Grüße da Milbo[/code]
ich habe folgendes Problem, ich habe einen Java-client, welcher Eigennamen und Nachnamen in eine mysql Datenbank schreibt.
Innerhalb meines Programmes benutze ich nur latin-1.
Momentan jage ich alles durch nen gebastelten Encoder
Code:
mySC = new ServerConnector();
String command = "?user_name="+mySC.encodeURL(nameOwner);
String buffer ="";
try {
buffer = mySC.getHTMLText(protocol +adresse+seite+command,false);
} catch (Exception e) {
}
So in der Art halt,.. der ServerConnector sieht so aus
Code:
public class ServerConnector {
public boolean verboseXML = false;
public boolean verboseSQL = false;
public String lastConnectorError = "";
public String[][] URLENCODER={{"%","%25"},{"/","%2F"},{":","%3A"},
{";","%3B"},{"=","%3D"},{"@","%40"},{" ","%20"},
{"#","%23"},{"&","%26"}};
ServerConnector() {
}
public String encode(String[][] encoder, String source){
String out = source;
for (int i=0; i<encoder.length; i++){
out = out.replaceAll(encoder[i][0],encoder[i][1]);
}
return out;
}
public String encodeXML(String source){
return encode(XMLENCODER, source);
}
public String encodeURL(String source){
return encode(URLENCODER, source);
}
public String getHTMLText(String url, boolean setCR) throws Exception{
String output = "";
URL site = new URL(url);
URLConnection conn = site.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null){
if (verboseXML) System.out.println(inputLine);
if (setCR)
output += inputLine + "\n";
else
output += inputLine;
}
return output;
}
Wie man oben sehen kann wird alles per Hand umencodiert.
Ich habe mir überlegt, dass es da eigentlich irgendwas fertiges geben müsste, weil das ein Leerzeichen ein %20 wird, woher kommt das nochmal?
Also letzendlich haben sehr viele Leute das Problem, dass man nur ASCII übers Netz übertragen kann. Ich hab wenig Lust mir alle möglichen europäischen Sonderzeichen rauszusuchen und dann für jedes irgendeine Maskierung zu überlegen, ich denke das ist verständlich.
Ich hab da auch schon mit getBytes rumgefummelt und verschiedenen Charsets, aber eigentlich gehts ja um latin-1 => ASCII und wieder zurück....
Ich hoffe mir kann jmd von euch helfen, sonst muss ich es halt doch manuell mir überlegen.
Grüße da Milbo[/code]