Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] - Kodowanie znaków
Forum PHP.pl > Forum > Przedszkole
rumpel
witam problem dotyczy kodowania, ale może poprostu opiszę co chcę zrobić, bo być może jest prostsze rozwiązanie tego problemu.

Nowieć we flashu MX w polu dynamic text chce zaimprotować news'a z bazy danych... Baza danych pochodzi z CMS'a i generalnie strona też chodzi na cms'e całym, a ja chcę tylko w topie dać flash'a z newsem... tak by się wyswietał non stop. smile.gif

troszke pogooglowałem i udało mi sie we flashu zaimprtować te dane, jednakże są spore problemy z kodowaniem, ponieważ cały cms jest w ISO... a we flashu dane z tego co poczytałem musza byc w uni... Wiec szukalem skyptu ktory by zmienial iso na uni... ale znalazlem tylko uni na iso...

poniezej zamieszczam zrodlo pliku i tego skryptu moze ktos podpowie jak zmienic i co poprawic... bo moje pojecie o php jest Nikle sad.gif ale uczę się... smile.gif

plik newsflash.pl
  1. <?php
  2.  
  3. $dbname = "pcprsmod"; //nazwa bazy danych
  4. $dbuser = "root"; // nazwa uzytkownika
  5. $dbpw = "krasnal"; //haslo
  6. $dbhost = "localhost"; //lokacja bazy danych
  7.  
  8. $open = mysql_connect($dbhost, $dbuser, $dbpw) or die(mysql_error());
  9. mysql_select_db($dbname) or die(mysql_error());
  10.  
  11.  
  12. $output = "&newsy=";
  13.  
  14. $sql=mysql_query("SELECT * FROM niusy ORDER BY Id_Niusy DESC LIMIT 1" or die (mysql_error());
  15.  
  16. while($row=mysql_fetch_array($sql))
  17.  
  18. { $Tytul=$row["Tytul"];
  19. $Zajawka=$row["Zajawka"];
  20.  
  21. $output.="$Tytul
  22. $Zajawka
  23. ";
  24.  
  25. }
  26. echo $output;
  27.  
  28. ?>



a teraz skrypt ktory znalazłem w sieci i przerabia UNI na ISO a ja chce zeby bylo odwrotnie...
  1. <?php
  2. function utf82iso88592($tekscik) {
  3. $tekscik = str_replace("xC4x85", 'ą', $tekscik);
  4. $tekscik = str_replace("xC4x84", 'Ą', $tekscik);
  5. $tekscik = str_replace("xC4x87", 'ć', $tekscik);
  6. $tekscik = str_replace("xC4x86", 'Ć', $tekscik);
  7. $tekscik = str_replace("xC4x99", 'ę', $tekscik);
  8. $tekscik = str_replace("xC4x98", '', $tekscik);
  9. $tekscik = str_replace("xC5x82", 'ł', $tekscik);
  10. $tekscik = str_replace("xC5x81", 'Ł', $tekscik);
  11. $tekscik = str_replace("xC5x84", 'ń', $tekscik);
  12. $tekscik = str_replace("xC5x83", 'Ń', $tekscik);
  13. $tekscik = str_replace("xC3xB3", 'ó', $tekscik);
  14. $tekscik = str_replace("xC3x93", 'Ó', $tekscik);
  15. $tekscik = str_replace("xC5x9B", 'ś', $tekscik);
  16. $tekscik = str_replace("xC5x9A", 'Ś', $tekscik);
  17. $tekscik = str_replace("xC5xBC", 'ż', $tekscik);
  18. $tekscik = str_replace("xC5xBB", 'Ż', $tekscik);
  19. $tekscik = str_replace("xC5xBA", 'ź', $tekscik);
  20. $tekscik = str_replace("xC5xB9", 'Ź', $tekscik);
  21. return $tekscik;
  22. }
  23.  
  24. ?>
skowron-line
  1. <?php
  2. // Provides: You should eat pizza, beer, and ice cream every day
  3. $phrase = "You should eat fruits, vegetables, and fiber every day.";
  4. $healthy = array("fruits", "vegetables", "fiber");
  5. $yummy = array("pizza", "beer", "ice cream");
  6. ?>


przyklad z manuala zobacz jak prosciej mozna napisac twoja funkcje

edit:str_replace zobacz jaki ma prototyp ta dunkcja i napewno bedziesz wiedzial
Amorph
  1. <?php
  2. $tekscik = str_replace("ó", "xC3xB3", $tekscik);
  3. ?>
rumpel
rozumię że z tym "ó" to mam sobie dalej tak samo zrobic ? smile.gif to ja sie zabieram i napisze jaki efekt smile.gif

ale? czy zamiast $tekscik mam dać $output ?
Amorph
$tekscik to zmienna funkcji. Nic nie zmieniaj...
wywołuj ją tuż przed echo $output.
$output=utf82iso88592($output);
rumpel
ehh... musze jeszcze jakis błąd robic sad.gif

jak zapisałem w pliku te zmiany i otworzylem przez okno firefoxa zeby sprawdzic, to pokazaly mi sie znaki hinskie... sprawdzilem kodowanie strona otworzyla sie w kodowaniu utf-16 little endian jak zmienilem kodowanie na utf-8 zeby zobaczyc czy sa polskie znaczki, to zobaczyłem...
  1. Warning: Unexpected character in input: '' (ASCII=92) state=1 in c:\usr\krasnal\www\php_mysql_flash\text.php on line 12
  2.  
  3. Parse error: parse error in c:\usr\krasnal\www\php_mysql_flash\text.php on line 12

doszedlem do wniosku ze pewnie plik musi byc zapisany w formacie Unicode... wiec zapisalem w notatniku windowsowym (zapisz jako -unicode)

ale jak to zrobilem, to nic nie zobaczylem sad.gif gdzie jeszcze robie błąd ?

ponizej przytoczylem plik newsflash.php po edycji :
  1. <?php
  2.  
  3. $dbname = "pcprsmod"; //nazwa bazy danych
  4. $dbuser = "root"; // nazwa uzytkownika
  5. $dbpw = "krasnal"; //haslo
  6. $dbhost = "localhost"; //lokacja bazy danych
  7.  
  8. $open = mysql_connect($dbhost, $dbuser, $dbpw) or die(mysql_error());
  9. mysql_select_db($dbname) or die(mysql_error());
  10. function utf82iso88592($tekscik) {
  11. $tekscik = str_replace('ą', "xC4x85", $tekscik);
  12. $tekscik = str_replace('Ą', "xC4x84", $tekscik);
  13. $tekscik = str_replace('ć', "xC4x87", $tekscik);
  14. $tekscik = str_replace('Ć', "xC4x86", $tekscik);
  15. $tekscik = str_replace('ę', "xC4x99", $tekscik);
  16. $tekscik = str_replace('', "xC4x98", $tekscik);
  17. $tekscik = str_replace('ł', "xC5x82", $tekscik);
  18. $tekscik = str_replace('Ł', "xC5x81", $tekscik);
  19. $tekscik = str_replace('ń', "xC5x84", $tekscik);
  20. $tekscik = str_replace('Ń', "xC5x83", $tekscik);
  21. $tekscik = str_replace('ó', "xC3xB3", $tekscik);
  22. $tekscik = str_replace('Ó', "xC3x93", $tekscik);
  23. $tekscik = str_replace('ś', "xC5x9B", $tekscik);
  24. $tekscik = str_replace('Ś', "xC5x9A", $tekscik);
  25. $tekscik = str_replace('ż', "xC5xBC", $tekscik);
  26. $tekscik = str_replace('Ż', "xC5xBB", $tekscik);
  27. $tekscik = str_replace('ź', "xC5xBA", $tekscik);
  28. $tekscik = str_replace('Ź', "xC5xB9", $tekscik);
  29. return $tekscik;
  30. }
  31.  
  32.  
  33. $output = "&newsy=";
  34.  
  35. $sql=mysql_query("SELECT * FROM niusy ORDER BY Id_Niusy DESC LIMIT 1") or die (mysql_error());
  36.  
  37. while($row=mysql_fetch_array($sql))
  38.  
  39. { $Tytul=$row["Tytul"];
  40. $Zajawka=$row["Zajawka"];
  41.  
  42. $output.="$Tytul
  43. $Zajawka
  44. ";
  45.  
  46. }
  47. $output=utf82iso88592($output);
  48.  
  49. echo $output;
  50.  
  51. ?>


przepraszam, wiem, że jestem niecierpliwy jak dziecko smile.gif ale nie mam już pomysłów... Pomóżcie...
Amorph
Zobacz jak ci podałem przykład w poście #3 i porównaj ze swoim kodem.... - konkretnie znaki /
siemakuba
A może spróbuj z drugiej strony. Na przykład funkcje iconv" title="Zobacz w manualu php" target="_manual?
Do tego one są, do tego są one, do tego są. ;)

pozdr.
rumpel
ok. zrobiłem i działa, ale... no własnie winksmiley.jpg jak w każdym dobrym horrorze musi być podwójne dno... winksmiley.jpg

wyświetla mi polskie znaki diaktryczne poza: "ą" "Ą" "ś" "Ś" "ź" "Ź" i "Ę"

ktoś ma jakiś pomysł ?
siemakuba
Może masz kodowanie samego pliku inne niż UTF-8?
Możesz też spróbować dodać
  1. <?php
  2. ini_set('default_charset', 'UTF-8');
  3. ?>
być może pomoże.

BTW, znaki są diakrytyczne, a nie diaktryczne. (Wikipedia: Znaki diakrytyczne)

pozdr.
rumpel
Ok... doszedłem... google i wasza pomoc i już skumałem smile.gif

po pierwsze primo - pisząc w notepad zapiszcie plik w formatowniu UFT-8 a nie Unicode biggrin.gif (mój poważny błąd)

Nowięc, mając nadzieje, że ktoś kiedyś bedzie miał zbliżony problem i będzie googlował i przeszukiwał fora to może natknie się na ten wątek... chciałbym mu oszczędzić nerwów i zamieszczam odpowiedz smile.gif do tego horroru biggrin.gif

  1. <?php
  2. function iso2utf($tekscik) {
  3. $tekscik = str_replace("xb1", "xC4x85", $tekscik); //ą
  4. $tekscik = str_replace("xa1", "xC4x84", $tekscik); //Ą
  5. $tekscik = str_replace("xe6", "xC4x87", $tekscik); //ć
  6. $tekscik = str_replace("xc6", "xC4x86", $tekscik); //Ć
  7. $tekscik = str_replace("xea", "xC4x99", $tekscik); //ę
  8. $tekscik = str_replace("xca", "xC4x98", $tekscik); //Ę
  9. $tekscik = str_replace("xb3", "xC5x82", $tekscik); //ł
  10. $tekscik = str_replace("xa3", "xC5x81", $tekscik); //Ł
  11. $tekscik = str_replace("xf1", "xC5x84", $tekscik); //ń
  12. $tekscik = str_replace("xd1", "xC5x83", $tekscik); //Ń
  13. $tekscik = str_replace("xf3", "xC3xB3", $tekscik); //ó
  14. $tekscik = str_replace("xd3", "xC3x93", $tekscik); //Ó
  15. $tekscik = str_replace("xb6", "xC5x9B", $tekscik); //ś
  16. $tekscik = str_replace("xa6", "xC5x9A", $tekscik); //Ś
  17. $tekscik = str_replace("xbc", "xC5xBC", $tekscik); //ż
  18. $tekscik = str_replace("xac", "xC5xBB", $tekscik); //Ż
  19. $tekscik = str_replace("xbf", "xC5xBA", $tekscik); //ź
  20. $tekscik = str_replace("xaf", "xC5xB9", $tekscik); //Ź
  21. return $tekscik;
  22. }
  23. ?>


no i trzeba oczywiście wywołać funkcję przed wysłaniem danych do flasha, czyli przed
  1. <?php
  2. echo $output;
  3. ?>
, a robimy to następujaco:

  1. <?php
  2. $output=iso2utf($output);
  3. ?>


no i życze smacznego smile.gif

ps. Podziękowania dla forumowiczów smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.