Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

JSON + PHP + MySQL - problem z polskimi znakami


  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 csharp

csharp
  • 8 postów
  • SkądWarszawa

Napisano 01 listopada 2012 - 20:18

męczę się męczę... nie mam już pomysłu od czego to może zależeć...

w Obj-C tak przesyłam dane do PHP

- (IBAction)registerClicked:(id)sender {
    @try {
        
        NSString *password = [_txtPassword text];
        NSString *password2 = [_txtPassword2 text];
        NSString *email = [_txtEmail text];

        
        if([[_txtName text] isEqualToString:@""] || [[_txtSurname text] isEqualToString:@""]
            || [email isEqualToString:@""]  || [password isEqualToString:@""]
             || [password2 isEqualToString:@""]) {
            [self alertStatus:@"Proszę uzupełnić wszystkie pola" :@"Brak wypełnionych wszystkich pól"];
        } else if (![password isEqualToString:password2]) {
            [self alertStatus:@"Wpisane hasła różnią się od siebie" :@"Niezgodność haseł"];
        } else if (password.length < 4) {
            [self alertStatus:@"Hasło musi zawierać minimum 4 znaki" :@"Zbyt krótkie hasło"];
        } else if (![self validEmail:email]) {
            [self alertStatus:@"Adres e-mail jest nieprawidłowy" :@"Nieprawidłowy adres e-mail"];
        } else {
            
            //salt the password
            NSString* saltedPassword = [NSString stringWithFormat:@"%@%@", password2, kSalt];
            //prepare the hashed storage
            NSString* hashedPassword = nil;
            unsigned char hashedPasswordData[CC_SHA1_DIGEST_LENGTH];
            //hash the pass
            NSData *data = [saltedPassword dataUsingEncoding: NSUTF8StringEncoding];
            if (CC_SHA1([data bytes], [data length], hashedPasswordData)) {
                hashedPassword = [[NSString alloc] initWithBytes:hashedPasswordData length:sizeof(hashedPasswordData) encoding:NSASCIIStringEncoding];
            } else {
                [self alertStatus:@"Wystąpił problem - zamknij aplikację i spróbuj raz jeszcze" :@"Nieoczekiwany błąd"];
                return;
            }

            
            NSString *post =[[NSString alloc]
                             initWithFormat:@"name=%@&surname=%@&email=%@&password=%@", [_txtName text],[_txtSurname text],
                             email, hashedPassword];
            NSLog(@"PostData: %@",post);
            
            NSURL *url=[NSURL URLWithString:@"http://localhost/test"];
            
            NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
            
            NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
            
            NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
            [request setURL:url];
            [request setHTTPMethod:@"POST"];
            [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
            [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
            [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
            [request setHTTPBody:postData];
            
            // dla https [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
            
            NSError *error = [[NSError alloc] init];
            NSHTTPURLResponse *response = nil;
            NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
            
            NSLog(@"Odpowiedź serwera: %d", [response statusCode]);
            if ([response statusCode] >=200 && [response statusCode] <300)
            {
                NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
                NSLog(@"Response ==> %@", responseData);
                
                SBJsonParser *jsonParser = [SBJsonParser new];
                NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];
                NSLog(@"%@",jsonData);
                NSInteger success = [(NSNumber *) [jsonData objectForKey:@"success"] integerValue];
                NSLog(@"%d",success);
                if(success == 1)
                {
                    NSLog(@"Zarejestrowano poprawnie");
                    [self alertStatus:@"Odbierz wiadomość e-mail i potwierdź adres" :@"Dziękujemy!"];
                    RegisterFormViewController *account = [self.storyboard instantiateViewControllerWithIdentifier:@"login"];
                    [self presentViewController:account animated:YES completion:nil];

                    
                } else {
                    
                    NSString *error_msg = (NSString *) [jsonData objectForKey:@"error_message"];
                    [self alertStatus:error_msg :@"Błąd rejestracji!"];
                }
                
            } else {
                if (error) NSLog(@"Error: %@", error);
                [self alertStatus:@"Sprawdź połączenie z internetem!" :@"Błąd rejestracji!"];
            }
        }
    }
    @catch (NSException * e) {
        NSLog(@"Exception: %@", e);
        [self alertStatus:@"Wystąpił błąd." :@"Błąd rejestracji!"];
    }

}


i później PHP to waliduje i wrzuca do bazy...
problem w tym, że w konsoli Xcode widzę, że wychodzą dane z polskimi znakami.

2012-11-01 20:07:24.115 test[10073:c07] PostData:name=ąśśśćłłóóó	&surname=łłóóóśśćć&email=lllll@wp.pl&password=VÉ{¡TaªN˜B÷Ug¦·û 

a w bazie zamiast "ł" jest "?"
zamiast "ó" jest "o"
zamiast "ś" jest "s"
zamiast "ć" jest "c"

w php ustawiłem kodowanie w nagłówku.

header("Content-Type: application/json; charset=utf-8");

oraz podczas łączenia się z bazą:
//ustaw znaki
	mysql_query("SET NAMES utf8", $con)  or die(mysql_error());
	mysql_query("SET CHARACTER SET utf8", $con)  or die(mysql_error());
	mysql_query("SET collation_connection = utf8_polish_ci", $con)  or die(mysql_error());

baza jest w UTF-8 collaction też w UTF-8

o co chodzi?




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych