ä, ü, ö (umlaute) in strings?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ä, ü, ö (umlaute) in strings?

    hallo, ich hab ein kleines problem: ich habe ein suchfeld und wenn man dort etwas eingibt wie z.B. "hallo", dann ruft der auch ohne probleme eine funktion auf (die die eingabe so umwandelt, das es als GET-Variable an ein PHP-Script gesendet werden kann (um genau zu sein an das youtube such-script...)). Wenn ich jedoch irgendein Umlaut wie ä, ü oder ö eingebe überlastet das programm und stürzt ab. (bei irgendwelchen sonderzeichen wie "%" oder "&" aber nicht) wie bekomm ich es hin, das des programm nicht absürzt wenn ich einen umlaut eingebe?

    Quellcode

    1. IBOutlet NSSearchField *suche;

    Quellcode

    1. NSMutableString *suchstring;
    2. suchstring = [[NSMutableString alloc] initWithString:[suche stringValue]];
    3. [suchstring replaceOccurrencesOfString:@"%" withString:@"%25" options:NSCaseInsensitiveSearch range:NSMakeRange(0,[suchstring length])];
    4. [...]
    5. [suchstring replaceOccurrencesOfString:@"@" withString:@"%40" options:NSCaseInsensitiveSearch range:NSMakeRange(0,[suchstring length])];
    6. suchstring = [[NSString stringWithString:@"http://www.youtube.com/results?search_query="] stringByAppendingString:[suchstring stringByAppendingString:@"&search=Search"]];
    7. NSString *suchergebnis = [[NSString alloc] initWithContentsOfURL:[[NSURL alloc] initWithString:suchstring] encoding:NSISOLatin1StringEncoding error:nil];
    8. [suchstring release];
    9. [suchergebnis release];
    10. [status stopAnimation:nil];
    Alles anzeigen
    Windows, nein danke...
  • Original von Konrad
    Hallo,

    ich habe zwar keine direkte Antwort für dich die das Problem löst aber weißt du wo _genau_ das Programm abstürtzt?

    Du könntest auch das ä mit a oder ae übersetzen. Bei youtube wird bei der Suche z.B. aus nem ä nen a..


    das a zu ae umzuwandeln hab ich versucht, das programm stürzt trozdem ab. (daher vermut ich das es am string selber liegt...)
    das programm stürzt immer dann ab nachdem ich den suchbegriff mit umlaut eingegen hab und auf enter drücke. genauer kann ichs leider nicht sagen. (auf jeden fall wird noch nicht mal der erste befehl in der funktion die zum suchen aufgerufen wird ausgeführt. ([status startAnimation:nil]; ist der befehl, sollte man ja sehen wenn der starten würde...))
    Windows, nein danke...
  • RE: ä, ü, ö (umlaute) in strings?

    Quellcode

    1. NSString *suchergebnis = [[NSString alloc] initWithContentsOfURL:...
    2. ...
    3. [suchergebnis release];

    "suchergebnis" wird hier ein 'release' gesendet, ohne dass überhaupt etwas damit passiert.
    Wenn der Begriff nachher irgendwo verwendet wird, geht es sicher schief, ob mit Umlauten oder ohne.

    EDIT: "suchstring" durch "suchergebnis" ersetzt, entsprechend dem Code.
    I would be embarrassed if they did not spy on me.
  • "suchstring" wird hier ein 'release' gesendet, ohne dass überhaupt etwas damit passiert.
    Wenn der Begriff nachher irgendwo verwendet wird, geht es sicher schief, ob mit Umlauten oder ohne.

    Wieso, der suchString wird doch in Zeile 9 verwendet, ist lokal definiert und wird hinterher nicht mehr gebraucht. Wo wir grad in der Zeile sind: Die NSURL dort ist ein Leak.
  • RE: ä, ü, ö (umlaute) in strings?

    Original von longW

    Quellcode

    1. NSString *suchergebnis = [[NSString alloc] initWithContentsOfURL:...
    2. ...
    3. [suchergebnis release];

    "suchstring" wird hier ein 'release' gesendet, ohne dass überhaupt etwas damit passiert.
    Wenn der Begriff nachher irgendwo verwendet wird, geht es sicher schief, ob mit Umlauten oder ohne.

    das programm ist gerade am anfang. da zwischen kommt natürlich noch was.
    Windows, nein danke...
  • Original von omz
    "suchstring" wird hier ein 'release' gesendet, ohne dass überhaupt etwas damit passiert.
    Wenn der Begriff nachher irgendwo verwendet wird, geht es sicher schief, ob mit Umlauten oder ohne.

    Wieso, der suchString wird doch in Zeile 9 verwendet, ist lokal definiert und wird hinterher nicht mehr gebraucht. Wo wir grad in der Zeile sind: Die NSURL dort ist ein Leak.

    so besser? [[[NSURL alloc] initWithString:suchstring] autorelease] ?(
    Windows, nein danke...
  • mir fällt gerade auf das wenn man die youtube-seite so aufruft:

    Quellcode

    1. NSURL *url = [[NSURL alloc] initWithString:@"http://www.youtube.com/index.php"];
    2. NSString *inhalt = [[NSString alloc] initWithContentsOfURL:url];

    Nur sowas in den string gespeichert wird: [Blockierte Grafik: http://mandarin.quickshareit.com/share/bild13fdbc.png]
    liegt das am programm oder an der seite?

    mit stringByAddingPercentEscapesUsingEncoding: stürzt das programm übrigens nicht mehr ab...
    Windows, nein danke...
  • Original von Clemens
    mir fällt gerade auf das wenn man die youtube-seite so aufruft:

    Quellcode

    1. NSURL *url = [[NSURL alloc] initWithString:@"http://www.youtube.com/index.php"];
    2. NSString *inhalt = [[NSString alloc] initWithContentsOfURL:url];

    Nur sowas in den string gespeichert wird: [Blockierte Grafik: http://mandarin.quickshareit.com/share/bild13fdbc.png]
    liegt das am programm oder an der seite?

    mit stringByAddingPercentEscapesUsingEncoding: stürzt das programm übrigens nicht mehr ab...

    Liefert YouTube eventuell komprimierte Daten? Versuch doch mal die Daten zu entpacken, zlib(3).

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • Original von Chris
    Liefert YouTube eventuell komprimierte Daten?

    Sieht fast so aus, obwohl das wohl nicht immer so ist. Ich hab' eben mal den Test gemacht:

    Quellcode

    1. telnet www.youtube.com 80
    2. GET /index.php HTTP/1.1
    3. Host: www.youtube.com
    4. Accept: */*
    5. Accept-Charset: *
    6. Accept-Encoding: *
    7. User-Agent: mattik/1.0

    Und plain html kam zurück. Alternativ zum Entpacken würde ich einen NSMutableURLRequest nehmen und die Header fields so setzen, dass er nur plain HTML schickt.
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von Chris
    Liefert YouTube eventuell komprimierte Daten?

    Sieht fast so aus, obwohl das wohl nicht immer so ist. Ich hab' eben mal den Test gemacht:

    Quellcode

    1. telnet www.youtube.com 80
    2. GET /index.php HTTP/1.1
    3. Host: www.youtube.com
    4. Accept: */*
    5. Accept-Charset: *
    6. Accept-Encoding: *
    7. User-Agent: mattik/1.0

    Und plain html kam zurück. Alternativ zum Entpacken würde ich einen NSMutableURLRequest nehmen und die Header fields so setzen, dass er nur plain HTML schickt.
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von mattik
    Und plain html kam zurück. Alternativ zum Entpacken würde ich einen NSMutableURLRequest nehmen und die Header fields so setzen, dass er nur plain HTML schickt.

    Wobei ich da erstmal in die RFC gucken würde, es kann sein daß Du komprimierte Daten "annehmen mußt", das "chunked" beispielsweise mußt Du auch akzeptieren und kannst es nicht ausschalten.

    Wobei ich bei dem Gezippten gute Chancen sehe, das über das Accept zu umgehen.
    if (!exit(-1)) fprintf(stderr, "exit call failed. Program will continue\n");