Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] - Kodowanie znaków
rumpel
post 20.11.2006, 09:39:24
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 2.11.2005

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


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. ?>
Go to the top of the page
+Quote Post
skowron-line
post 20.11.2006, 09:49:42
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  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

Ten post edytował skowron-line 20.11.2006, 09:54:37


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Amorph
post 20.11.2006, 10:41:10
Post #3





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


  1. <?php
  2. $tekscik = str_replace("ó", "xC3xB3", $tekscik);
  3. ?>


Ten post edytował Amorph 20.11.2006, 10:42:02
Go to the top of the page
+Quote Post
rumpel
post 20.11.2006, 10:54:26
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 2.11.2005

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


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 ?

Ten post edytował rumpel 20.11.2006, 10:55:31
Go to the top of the page
+Quote Post
Amorph
post 20.11.2006, 11:03:11
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


$tekscik to zmienna funkcji. Nic nie zmieniaj...
wywołuj ją tuż przed echo $output.
$output=utf82iso88592($output);
Go to the top of the page
+Quote Post
rumpel
post 20.11.2006, 14:22:24
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 2.11.2005

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


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...
Go to the top of the page
+Quote Post
Amorph
post 20.11.2006, 14:35:22
Post #7





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Zobacz jak ci podałem przykład w poście #3 i porównaj ze swoim kodem.... - konkretnie znaki /
Go to the top of the page
+Quote Post
siemakuba
post 20.11.2006, 14:37:55
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
rumpel
post 20.11.2006, 18:19:54
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 2.11.2005

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


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ł ?

Ten post edytował rumpel 20.11.2006, 18:20:24
Go to the top of the page
+Quote Post
siemakuba
post 20.11.2006, 18:27:46
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
rumpel
post 21.11.2006, 09:15:10
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 2.11.2005

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


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

Ten post edytował rumpel 21.11.2006, 09:58:38
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: 14.08.2025 - 05:28