German Umlaute von Internetseite

torpedo

Member
Licensed User
Longtime User
Hallo zusammen

Ich lese eine Internetseite ein. Auf der Seite gibt es Umlaute.
Wenn ich nun mit

Dim job1 As HttpJob
job1.Initialize("job1", Me)
job1.Download("http://........") 'Seite ist im (charset=ISO-8859-1)

die Seite einlese erhalte ich als Rückgabewert

s = Job.GetString

KEINE Umlaute


Ich habe auch schon versucht in der Datei HttpJob von "UTF-8" auf "ISO-8859-1" zu ändern. Doch auch das blieb immer ohne erfolg.

Weiss hier jemand eine Lösung?

Habe auch schon versucht mit dem Beispiel von Klaus mit CHR abzufangen, doch auch dies war ohne Erfolg.

Besten Dank
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Ich habe das gleiche Problem nur andersrum.
Ich lese aus einer MysQL Datenbank die Datensätze ( gespeichert in UTF-8 ) aus mit,

Dim res As String
res = Job.GetString

Bekomme von den Umlauten dann solche werte wie
Fl\u00c3\u00a4chentraining
Das soll dann Flächentraining heissen. Wie kann ich das in normale Umlaute umwandeln?
 

JanPRO

Well-Known Member
Licensed User
Longtime User
@Wolli013 Das ist Unicode. Soweit ich weiß gibt es in B4A keine elegante Methode den irgendwie zu konvertieren. Die Frage ist aber sowieso, warum du die Einträge in Unicode ausgibst? Vielleicht kannst du ja Teile deines PHP Code posten ...
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Es läuft seit 2 Jahren als Web App und wurde so programiert weil es sonst immer probleme bei der Anzeige mit Umlauten gab und mit dem Unicode ging es dann aber ohne Probleme. Die Datenbank ist nicht mehr zu ändern und muss so bestehen bleiben.
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Ich hoffe du meinst das jetzt hier.
B4X:
<?
$user     = 'xxxxxx';       // eurer Benutzername
$host     = 'localhost';  // Hostadresse
$password = 'xxxxxxxx';           // eurer Passwort
$database = 'xxxxxx'; // eure Datenbank
$con = mysql_connect($host,$user,$password) or die(mysql_error());
mysql_select_db($database) or die(mysql_error());
mysql_query("SET CHARACTER SET utf8");
$query = file_get_contents("php://input");
$sth = mysql_query($query);

if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysql_error();
}
else
{
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows[] = $r;
    }
    print json_encode($rows);
}
?>
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Wenn ich es in der App anzeigen lasse wird es genauso wie es in der Datenbank gespeichert ist angezeigt.
Beispiel Eintrag in der Datenbank: Zugführer
Ausgabe in der App: Zugführer
Stehen soll aber Zugführer.
 

JanPRO

Well-Known Member
Licensed User
Longtime User
Ja das ist UTF-8.
Ich hoffe du meinst das jetzt hier.
Genau das meine ich, und hier liegt irgendwo der Fehler:
Mit json_encode machst du folgendes
ä-->\u00c3\u00a4
Du änderst also die UTF8 Kodierung zu Unicode/JSON.
Gibst du nur Wörter aus, oder wirklich einen JSON String?
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Mit deinem Code alleine ging es auch nicht, aber im Zusammenhang mit dem Code hier läuft es.
Danke für deine Hilfe.
B4X:
Sub Umlaute(p_strText As String) As String
Dim strTemp As String
strTemp = p_strText
strTemp=strTemp.Replace("ä","ä")
strTemp=strTemp.Replace("ö","ö")
strTemp=strTemp.Replace("ü","ü")
strTemp=strTemp.Replace("Ä","Ä")
strTemp=strTemp.Replace("Ö","Ö")
strTemp=strTemp.Replace("Ãœ","Ü")
strTemp=strTemp.Replace("ß","ß")
Return strTemp
End Sub
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Hier ein code Auszug

B4X:
Sub Umlaute(p_strText As String) As String
Dim strTemp As String
strTemp = p_strText
strTemp=strTemp.Replace("ä","ä")
strTemp=strTemp.Replace("ö","ö")
strTemp=strTemp.Replace("ü","ü")
strTemp=strTemp.Replace("Ä","Ä")
strTemp=strTemp.Replace("Ö","Ö")
strTemp=strTemp.Replace("Ãœ","Ü")
strTemp=strTemp.Replace("ß","ß")
Return strTemp
End Sub

Sub JobDone(Job As HttpJob)
    ProgressDialogHide
    If Job.Success Then
    Dim res As String
        res = Job.GetString
        res = Umlaute(res)
        Log("Rückgabe vom Server: " & res)
        Dim parser As JSONParser
        parser.Initialize(res)
 

KMatle

Expert
Licensed User
Longtime User
Android arbeitet standardmäßig mit UTF8. Meine DB's sind ebenfalls mit UTF8 definiert und meine php scripts mit
B4X:
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES 'utf8'");

Somit mit Umlauten keine Probleme mit httputils...
 
Top