Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przesyłanie tablicy danych - problem z kodowaniem
Agape
post 25.11.2015, 14:56:50
Post #1





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


Witam, mam skrypt który przechowuje w pliku tablice slow. Potrzebuję przesłać tą tablicę w formie nienaruszonej na drugi serwer przez curl i odczytać tam ją. Mam wszystko zrobione ale serwer docelowy partaczy kodowanie. Przykładowe slowo espańol i zamist ń jest znak zapytania ...

Na serwerze A zapisuje dane do pliku w formie json_encode($tablica_danych) a pozniej wysylam metoda POST przez curl zmienna ktora jest tablica json:
Kod
$slowa = urlencode( file_get_contents('tablica_danych.txt') );


nastepnie na serwerze B mam:
Kod
$slowa = json_decode( urldecode($_POST['slowa']), true);


no i wlasnie ten kod mnie doprowadzil do slepego zaulku ... probowalem do json_encode dodac JSON_UNESCAPED_UNICODE ale to zmienilo tylko sposob w jaki serwer B przekreca slowa :/ tekst ktory chce przekazac bedzie w roznych jezykacj, francuski, wloski itp.

Jakis pomysl jak przesylac ta tablice zeby poprawnie odczytywac znaki diakrytyczne ? Plik do ktorego wysylam dane ma na gorze:
  1. header('Content-type: text/html; charset=utf-8');


Ten post edytował Agape 25.11.2015, 14:59:39


--------------------
Go to the top of the page
+Quote Post
!*!
post 26.11.2015, 10:10:02
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


http://forum.php.pl/index.php?s=&showt...t&p=1177412


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Agape
post 26.11.2015, 14:56:30
Post #3





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


ok okazało się jednak że blad jest gdzie indziej, kodowanie jest dobre, wyswietla sie z prawidlowym znakiem ale to przy zapisie do bazy danych powstaja "krzaki" przy znakach diakrytycznych ... dodaje do bazy danych przez model ktory w konstruktorze ma:

  1. $this->db = new PDO('mysql:host='.$this->db_config['host'].';dbname='.$this->db_config['db_name'].';encoding=utf8', $this->db_config['username'], $this->db_config['password']);
  2. $this->db -> exec("SET CHARACTER SET utf8");
  3. $this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );


Dodaje wpisy poprzez $this->query($sql); Cała baza i wszystkie jej tabele maja kodowanie utf8_general_ci, plik który obsluguje żadania w nagłówku ma ustawione kodowanie UTF-8 ... skończyły mi się pomysły co to może być :/


--------------------
Go to the top of the page
+Quote Post
andrew654
post 26.11.2015, 21:19:26
Post #4





Grupa: Zarejestrowani
Postów: 35
Pomógł: 9
Dołączył: 16.11.2012

Ostrzeżenie: (0%)
-----


A próbowałeś:

  1. $this->db -> exec("SET NAMES utf8");


Go to the top of the page
+Quote Post
Agape
post 27.11.2015, 08:23:41
Post #5





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


@andrew654 dziękuję Ci ślicznie, nigdy nie używałem tego i było dobrze a teraz było potrzebne i pomogło smile.gif


--------------------
Go to the top of the page
+Quote Post
viking
post 27.11.2015, 10:28:50
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Dla mysql możesz też na poziomie tworzenia instancji PDO:

  1. $pdo = new PDO(
  2. 'mysql:host=hostname;dbname=defaultDbName',
  3. 'username',
  4. 'password',
  5. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  6. );


--------------------
Go to the top of the page
+Quote Post
andrew654
post 27.11.2015, 13:08:51
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 9
Dołączył: 16.11.2012

Ostrzeżenie: (0%)
-----


@Agape spoko, też kiedyś kilka dni przeszukiwałem internet zanim doszedłem to set names utf-8. Teraz już mam taki pliczek z configiem do bazy i zawsze go używam, żeby czegoś nie pominąć przypadkiem wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 13:53