Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja UTF-8 na ISO-8859-2
Forum PHP.pl > Forum > PHP
lukasamd
Witam,
jak można dokonać konwersji zmiennej zawierającej znaki zakodowane w UTF-8 na ISO-8859-2? Próbowałem korzystać z iconv:

  1. <?php
  2. $zmienna = iconv("UTF-8","ISO-8859-2",zmienna);
  3. ?>


Ale rezultaty wyglądają tak:
Wejście: łąśććńęęęęóśś
Wyjście: ? ? ? ? ? ? ? ? ? ?

[znaki zapytania oddzieliłem spacjami aby nie były zamieniane na emotikony]
qrees
A jak wyświetlasz wynik? bo w tym kodzie co podałeś żadnego wyświetlania nie ma...
lukasamd
Normalnie poprzez echo, na stronie która jest zakodowana w ISO-8859-2.
qrees
może w tym jest problem, że kod powinien wyglądać tak:
  1. <?php
  2. $zmienna = iconv("UTF-8","ISO-8859-2",$zmienna);
  3. ?>
lukasamd
Tamto to mój babol w poście, zmienne jest w odpowiedni sposób wrzucona do funkcji (czytali wygląda to tak, jak ty podałeś).
SirZooro
iconv() wstawia pytajniki zamiast znaków których nie może skonwertować. Upewnij się więc czy tekst który chcesz skonwertować na pewno jest w UTF-8. Alternatywnie możesz też się pobawić mb_convert_encoding.
lukasamd
Użycie mb_convert_encoding daje niestety takie same rezultaty...

A czy baza danych ma tu wiele do powiedzenia? Wygląda to tak: skrypt z jednej strony (iso-8859-2), korzystający z jednej bazy przerywa połączenie. Łączy się z bazą forum phpbb3 (i baza i forum UTF-8) i pobiera dane odnośnie ostatnich postów. Wtedy pętla która wyświetla wyniki a na jej początku funkcja od konwertowania - tam gdzie nie ma polskich znaków wszystko jest ok. Tak gdzie są - pytajniki. Po wykonaniu pętli skrypt zrywa połączenie i wraca do swojej bazy.
SirZooro
Spróbuj po nawiązaniu połączenia z tą drugą bazą danych ustawić kodowanie na iso:
  1. SET NAMES latin2

Osobiście bym to podejrzewał.
lukasamd
Tzn. gdzie to dać? Do zapytania sql czy jako resztę kodu php?
ayeo
Jako normalne zapytanie. mysql_query('SET NAMES UTF8');

Pozdrawiam!
lukasamd
DZIAŁA! biggrin.gif Wrzuciłem to przed zapytanie pobierające posty a dalej dałem konwersje i chodzi aż miło smile.gif

Mam jednak jeszcze jedno pytanie - czy dla bezpieczeństwa, po powrocie do starej bazy warto w taki sam sposób wrócić do starego kodowania?
SirZooro
Możesz to zrobić, tak dla pewności.
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.