Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [advAjax] Kodowanie znaków przy insercie
yaro
post 25.05.2006, 19:33:12
Post #1





Grupa: Zarejestrowani
Postów: 160
Pomógł: 4
Dołączył: 22.04.2006
Skąd: Kraków

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


Mam problem z kodowaniem znaków które są dodawane do bazy. Zamiast polskich znaków zmienia na inne, np z ą robi a. W bazie mam kodowanie iso-8859-2
W jaki sposób mam rozwiązać ten problem?


--------------------
Go to the top of the page
+Quote Post
anopak
post 25.05.2006, 20:25:49
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


  1. <?php
  2. header('Content-type: text/html; charset=iso-8859-2');
  3. ?>


powinno pomóc...


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
yaro
post 25.05.2006, 20:36:58
Post #3





Grupa: Zarejestrowani
Postów: 160
Pomógł: 4
Dołączył: 22.04.2006
Skąd: Kraków

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


niestety nie pomaga, teraz dodaje tylko questionmark.gif
napisałe: encodeURIComponent()
to znowu zapisuje: %C5%A1%C5%82


--------------------
Go to the top of the page
+Quote Post
anopak
post 25.05.2006, 20:45:11
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


no to jest jeszcze opcja typu iconv bądź mb_convert_variables


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
yaro
post 26.05.2006, 15:51:18
Post #5





Grupa: Zarejestrowani
Postów: 160
Pomógł: 4
Dołączył: 22.04.2006
Skąd: Kraków

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


Dalej mi to nie działa.
Robie tą strone społecznie i niech ktoś nie myśli że będę na tym zarabiał, chodzi mi o to że dalej są informacje o cenie itp. Robie strone dzięki której będzie można sie wymieniać danymi osób które mają książkę do sprzedania i by kupujący mógł sie z nim skontaktować.
Prosze o pomoc. Siedze już nad tym problemem drugi dzień i nie wiem jak go rozwiązać.
Podam kod:

plik: index.php
  1. <form name="doublecombo2" id="doublecombo2">
  2. <select size="1" name="a2" id="a2" onChange="java script:getKsiazki(this.options[this.selectedIndex].value, 2)">
  3. <option>-- wybierz przedmiot --</option>
  4. <?
  5. include_once "config.php";
  6. $result = mysql_query("SELECT * FROM przedmiot", $mysql_link);
  7. while ($row = mysql_fetch_assoc($result)) {
  8. echo '<option value="'.$row[id].'">'.$row[nazwa].'</option>';
  9. }
  10.  
  11. ?>
  12. </select><br /><br />
  13. <select name="tyt2" id="tyt2" size="1" >
  14. <option disabled>-- wybierz książkę(tytuł) --</option>
  15. </select><br /><br />
  16. sztuk: 1<br /><br />
  17. cena: <input type="text" name="cena" /><br /><br />
  18. opis: <textarea name="opis" rows="5" cols="30">łą</textarea><br />
  19.  
  20. <input type="button" value=" Dodaj " id="submitBtnKs" onclick="addBook()" />
  21. </form>


następnie: add.js

Kod
function addBook() {
    var opis = $("opis").value;
    
    advAJAX.post({
        url : "addBook.php",
  parameters : {
     "opis" : opis
   },
        onSuccess : function(obj) {
          if (obj.responseText == 1) {
            
             $("komunikat").innerHTML = "Twoja ksiazka zostala dodana do bazy!";
          }
          else {
        
             $("komunikat").innerHTML = "BLAD";

          }
        }
    });
}



i plik dodający: addBook.php

  1. <?php
  2. header('Content-type: text/html; charset=iso-8859-2');
  3.  
  4. include "config.php";
  5.  
  6. $opis = $_POST[opis];
  7. $activ = 1;
  8.  
  9. $user = 1;
  10. $ksiazka = 1; 
  11. $cena = 1;
  12.  
  13. //$opis = "łą";
  14.  
  15. //$opis = iconv("", "ISO-8859-2", $opis);
  16.  
  17. mysql_query("SET NAMES latin2;");
  18.  
  19. $result = mysql_query("INSERT INTO sprzedaz VALUES('', '$user', '$ksiazka', '$cena', '$opis', '$activ')");
  20. echo "1";
  21. }
  22. else
  23. echo "0";
  24. ?>


W bazie mam ustawione kodowanie latin2. Jak w pliku addBook.php ręcznie wpisze jakieś słowo z polskimi znakami to w bazie jest poprawnie zapisane, błędy powstają przy przesyłaniu do pliku addBook.php. Próbowałem to co @anopak pisał ale nic nie pomogło. Gdzie może być jeszcze jakiś błąd, nie mam już siły sad.gif
Plik index.php jest mało ważny, ale dałem. Czy ktoś ma jakiś pomysł jak to rozwiązać? Albo czy ktoś robił coś takiego i czy nie mógłby pokazać jego przykładu? Prosze o pomoc.


--------------------
Go to the top of the page
+Quote Post
anopak
post 26.05.2006, 18:52:11
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


spróbuj tak:

  1. <?php
  2. $opis=iconv('utf-8','iso-8859-2',$opis);
  3. ?>


lub lepiej, jeżeli masz możliwość użycia mb_convert_variables:
  1. <?php
  2. mb_convert_variables('ISO-8859-2', "ASCII,UTF-8,SJIS-win", $opis);
  3. ?>


*mb_convert_variables działa na zmiennej(czyli ją zmienia odrazu) a zwraca true lub false... zreszta tak jak to pisze w manualu...


ja korzystam z mb_convert_variables i wszystko mi działa dobrze winksmiley.jpg


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
yaro
post 26.05.2006, 19:57:34
Post #7





Grupa: Zarejestrowani
Postów: 160
Pomógł: 4
Dołączył: 22.04.2006
Skąd: Kraków

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


dalej mi nie działa sad.gif
mb_convert_variables() - jak próbuje użyć tej funkcji to parser wywala mi błąd.
Wydaje mi sie że to coś w advAjaxie jest coś nie tak, bo sprawdziłem co po kolei gdzie następuje zmiana znaków i w funkcji w której przesyłam zapytanie jest ok, ale po przjściu przez avdAjaxa wychodzą znaczki, próbowałem tych porad ale nie pomagają. AdvAjax koduje dane przez encodeURIComponent(), tylko teraz jak to zamienić na normalne znaki? Próbowałem też urldecode w php oczywiście ale nic.
@anopak czy mógłbyś mi pokazać twój przykład, bo już nie wiem co mam robić, ogłupiałem już.


--------------------
Go to the top of the page
+Quote Post
anopak
post 26.05.2006, 20:31:18
Post #8





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


przepraszam za wprowadzenie w błąd powinno być tak:

  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3.  
  4. $opis=iconv('utf-8','iso-8859-2',$opis);
  5. ?>


gdyż dane przesyłane AJAX'em zawsze są w utf-8, dlatego przy zapisywaniu do bazy danych z ajax'a należy użyć utf-8, w przypadku odczytu danych z ajax'a, używamy iso-8859-2 winksmiley.jpg


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
yaro
post 26.05.2006, 20:53:40
Post #9





Grupa: Zarejestrowani
Postów: 160
Pomógł: 4
Dołączył: 22.04.2006
Skąd: Kraków

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


Działa smile.gif
Dzięki za wszystko @anopak
Mam nadzieje że już będzie dobrze smile.gif


--------------------
Go to the top of the page
+Quote Post
xamil
post 9.08.2006, 07:55:55
Post #10





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Mam identyczny problem. Używam klasy advAjax. Czy nie ma możliwości ustawienia jakiś parametrów w tej klasie aby dane były jednak przesyłane na serwer w iso-8859-2 a nie UTF? Bez konieczności użycia konwersji utf-8 do iso-8859-2?

Byłoby mi to baaardzo przydatne. Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
mike
post 9.08.2006, 08:38:05
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


W advAJAX nie ma możliwości przesyłania w innym kodowaniu niż UTF-8
Jak to ~anakin mawia: ma być UTF-8 i tyle smile.gif
Go to the top of the page
+Quote Post
xamil
post 9.08.2006, 09:34:56
Post #12





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Szkoda... trochę mi to komplikuje sprawe. Niestety mam, że tak powiem narzut z góry, że muszę wrzucać do bazy treść w iso-8859-2 i nie ma innej możliwości. No cóż pozostaje mi tylko konwersja na z utf na iso:(

Dzięki!


p.s. Jest jakaś funkcja do konwersji całych tablic?biggrin.gif Chciałbym na poziomie kontrolera skonwertować całe $_REQUEST... jak nie to będę musiał użyć jakiejś funkcji rekurencyjnej.
Go to the top of the page
+Quote Post
Suzos
post 8.08.2007, 20:20:00
Post #13





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2007

Ostrzeżenie: (10%)
X----


Dzięki za pomoc smile.gif
Go to the top of the page
+Quote Post
bim2
post 23.08.2007, 09:18:28
Post #14





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


To mam pytanie z innej beczki. Mam formularz. Po kliknięciu wykonuje się advAjax.post.
W plikach, gdzie zapisuję dane dałem

$sText = iconv('utf-8','iso-8859-2', $sText);
i nic to nie dało (próbowałem mb_). Wysyłam także headera sciana.gif

Macie jakieś pomysły (baze mam latin_2, mysql)? Podpowiem jeszcze, że używam handyEditor, który działa w utf-8. Funkcją handyEditor.getSource(); pobieram wygenerowany kod html i wysyłam tak jak wyżej napisałem. sadsmiley02.gif

PS. Do bazy zapisują mi się "?questionmark.gif?"

EDIT: ROTFL... wczoraj 3h siedziałem i nie działało. Dodałem zapytanie SET CHASR latin2 (czy jakoś tak) i działa. Dzieki...

Ten post edytował bim2 23.08.2007, 09:27:21


--------------------
Go to the top of the page
+Quote Post
Rude Dude
post 23.11.2007, 21:45:26
Post #15





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 23.07.2007

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


Dobrze że natrafilem na ten temat, pomogl mi rozwiazac problem z kodowaniem. Moderatorzy powinni go przykleic.

ja u siebie zrobilem tak, w pliku php ktory wywoluje ajax mam na poczatku

  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3. ?>


i caly plik jest w kodowaniu UTF-8, zmienilem porgramem CoreEditor.

A w miejscach gdzie cos jest z bazy wyciagane to daje funkcje

  1. <?php
  2. $tytul_z_bazy =iconv('iso-8859-2','utf-8',$tytul_z_bazy);
  3. ?>


mam na odwrot kodowanie w funkcji iconv poniewaz z bazy wyciaga tekst w iso i trzeba go na utf-8 przekodowac.

Ten post edytował Rude Dude 23.11.2007, 21:46:50
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: 20.04.2024 - 02:10