Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Konwersja między UTF8 a ISO w PHP
gruzin
post 31.08.2007, 13:45:43
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 31.08.2007
Skąd: Lublin

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


Witam. Chciał bym aby na moje stronie było kodowanie znaków w UTFie ale moja wersja mysqla nie umożliwia tego kodowania więc po wyciągnięciu danych pojawiają się krzaczki. Jest jakaś funkcja pozwalająca na konwersje juz po wyciągnięciu danych z bazy?
Coś w stylu:
Kod
<?php
       $dane_z_bazy;
       $dane_w_utf = IsoToUtf($dane_z_bazy);
    ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Fixus
post 31.08.2007, 13:56:13
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


zrób tak:
Kod
$zapytanie = mysql_query("SET CHARSET utf8");
$sql = "SELECT * FROM tabela";
$result = mysql_query($sql);

po sprawie
Go to the top of the page
+Quote Post
gruzin
post 31.08.2007, 13:59:11
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 31.08.2007
Skąd: Lublin

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


w tym problem ze moja wersja MySQLa nie obsługuje takiego kodowania...są dostępne tylko różne rodzaje ISO.
Go to the top of the page
+Quote Post
Fixus
post 31.08.2007, 14:13:09
Post #4





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


dobrze, ale próbowałeś? Spokojnie powinno ci zadziałać
Go to the top of the page
+Quote Post
gruzin
post 31.08.2007, 14:24:12
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 31.08.2007
Skąd: Lublin

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


próbowałem i tego i jeszcze czogoś w stylu "SET CHARACTER SET UTF8"... to w manualu mysqla znalazłem.
Na koniec wylistowałem sobie dostępne zbiory kodowania znaków i niestety utf tam niebyło

Ten post edytował gruzin 31.08.2007, 14:24:44
Go to the top of the page
+Quote Post
PiotrLegnica
post 31.08.2007, 14:32:33
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 6.07.2005
Skąd: Legnica

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


iconv


--------------------
SithTemplate
Go to the top of the page
+Quote Post
gruzin
post 31.08.2007, 14:46:28
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 31.08.2007
Skąd: Lublin

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


krótko i treściwie...wielkie dzieki laugh.gif
Dla leniwyxh link http://pl2.php.net/manual/pl/function.iconv.php
Go to the top of the page
+Quote Post
Hazel
post 31.08.2007, 20:20:49
Post #8





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Są serwery, na których iconv() nie działa, lub nie funkcjonuje poprawnie. Myślę, że bardziej chodziło o kod w rodzaju:
  1. <?php
  2. function win_conv()
  3. {
  4.  $tabela = Array(
  5. "xb9" => "xc4x85", "xa5" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
  6. "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
  7. "xf3" => "xc3xb3", "xD3" => "xc3x93", "x9c" => "xc5x9b", "x8c" => "xc5x9a",
  8. "x9f" => "xc5xba", "xaf" => "xc5xbb", "xbf" => "xc5xbc", "xac" => "xc5xb9",
  9. "xf1" => "xc5x84", "xD1" => "xc5x83");
  10.  return $tabela;
  11. }
  12.  
  13. function iso_conv()
  14. {
  15.  $tabela = Array(
  16. "xb1" => "xc4x85", "xa1" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
  17. "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
  18. "xf3" => "xc3xb3", "xD3" => "xc3x93", "xb6" => "xc5x9b", "xa6" => "xc5x9a",
  19. "xbc" => "xc5xbc", "xac" => "xc5xbb", "xbf" => "xc5xba", "xaf" => "xc5xb9",
  20. "xf1" => "xc5x84", "xD1" => "xc5x83");
  21.  return $tabela;
  22. }
  23.  
  24. function iso2utf($tekst)
  25. {
  26.  return strtr($tekst, iso_conv());
  27. }
  28.  
  29. function utf2iso($tekst)
  30. {
  31.  return strtr($tekst, array_flip(iso_conv()));
  32. }
  33.  
  34. function win2utf($tekst)
  35. {
  36.  return strtr($tekst, win_conv());
  37. }
  38.  
  39. function utf2win($tekst)
  40. {
  41.  return strtr($tekst, array_flip(win_conv()));
  42. }
  43.  
  44. function iso2win($tekst)
  45. {
  46.  return strtr($tekst, "xa1xa6xacxb1xb6xbc", "xa5x8cx8fxb9x9cx9f");
  47. }
  48.  
  49. function win2iso($tekst)
  50. {
  51.  return strtr($tekst, "xa5x8cx8fxb9x9cx9f", "xa1xa6xacxb1xb6xbc");
  52. }
  53. ?>


Konwersja we wszystkich kombinacjach win/iso/utf8.

P.S. Tam gdzie w kodzie wyswietliły sie emotki, jest ciąg "xd".

Ten post edytował Hazel 31.08.2007, 20:22:37


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 31.08.2007, 22:13:21
Post #9





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Jeśli nie korzystasz z bazy bezpośrednio (bez PHP) to możesz też raz skonwertować wszystko co jest na UTF8 i zapisywać w niej, a że wewnętrznie "myśl" ze to jest np. ISO to już nie ważne.
Znak o kodzie 96 po zapisaniu i odczycie nadal będzie miał ten kod.
A ciągła konwersja nie jest dobra, ale jeśli będziesz korzystał np. phpMyAdmin to już kłopot bo domyślne kodowanie spowoduje że znaki z UTF8 będą podwójnymi krzaczkami...


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
emjot27
post 31.03.2010, 09:37:02
Post #10





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 4.06.2007

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


Cytat(Hazel @ 31.08.2007, 20:20:49 ) *
  1. <?php
  2. [..]
  3.  
  4. function iso_conv()
  5. {
  6.  $tabela = Array(
  7. "xb1" => "xc4x85", "xa1" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
  8. "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
  9. "xf3" => "xc3xb3", "xD3" => "xc3x93", "xb6" => "xc5x9b", "xa6" => "xc5x9a",
  10. "xbc" => "xc5xbc", "xac" => "xc5xbb", "xbf" => "xc5xba", "xaf" => "xc5xb9",
  11. "xf1" => "xc5x84", "xD1" => "xc5x83");
  12.  return $tabela;
  13. }
  14.  
  15. function iso2utf($tekst)
  16. {
  17.  return strtr($tekst, iso_conv());
  18. }
  19.  
  20. [...]
  21. ?>


Witam, skorzystałem z tej funkcji w moim kodzie, i do tej pory działało ok, dopóki nie zauważyłem, jednak małego błędu. Mianowicie, podczas konwersji z ISO na UTF zamienia mi literę "ż" na "ź" i odwrotnie "ź" na "ż". Próbowałem znaleźć nieprawidłowości w tablicy funkcji iso_conv, ale to nie pomogło! Co może być tego przyczyną i jak sobie z tym poradzić? Czy ktoś spotkał się z podobnym błędem?

Pozdrawiam i z góry dzięki za odpowiedź.
Go to the top of the page
+Quote Post
erix
post 31.03.2010, 17:12:06
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie lepiej korzystać po prostu z iconv, tylko wynajdywać koło na nowo...?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
emjot27
post 31.03.2010, 20:41:01
Post #12





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 4.06.2007

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


Ponieważ jest tak jak napisał już kolega powyżej:
Cytat(Hazel @ 31.08.2007, 21:20:49 ) *
Są serwery, na których iconv() nie działa, lub nie funkcjonuje poprawnie. [..]
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: 18.07.2025 - 10:35