Skocz do zawartości

Kodowanie UTF


Mar

Rekomendowane odpowiedzi

Witam,

Postanowiłem zmienić kodowanie jednej z moich stron na UTF-8, bazę zrobiłem w utf8_unicode_ci, system porównania utf8_unicode_ci,

strony kodowane w UTF-8, przed połączeniem ustawiam:

mysql_query ("SET NAMES utf8");

, na stronie wszystko się wyświetla prawidłowo, ale problem pojawia się przy linkach, postanowiłem pozostawić polskie znaki, i wyświetlając linki widzę np. /Anioł.html, ale problem w tym, że po kliknięciu w link otrzymuję /Anio%C5%82-36.html, a powinienem otrzymać /Anio%B3.html dlaczego tak się dzieje? Jak wpiszę w przeglądarce Anioł to otrzymam go w kodowaniu UTF-8, gdzie szukać problemu? Próbowałem nawet różnych konwersji np. ISO88592_2_UTF8.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Moim zdaniem:

Anio%C5%82.html - w kodowaniu UTF-8

Anio%B3.html - w kodowaniu ISO-8859-2

Więc jeżeli się nie mylę to wszystko jest prawidłowo.

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nie do końca, ponieważ przesyłam ten wyraz zmienną GET, a następnie zamieniam na:

WIN1250_2_UTF8($_GET['slowo']);

i dostaję zapytaniu sql "anio�", a jak wpiszę w przeglądarce "Anioł" pojawia się "Anio%B3.html" to dostaję prawidłowe zapytanie "Anioł".

Więc gdzie popełniłem błąd?

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Pliki Masz zapisane w kodowaniu UTF-8 ?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Tak zapisałem, i na stronie wszystkie znaki wyświetlają się prawidłowo, nawet te pobierany z bazy danych, lecz problem jest właśnie z tym, że nie mogę pobrać np. słowa Anioł, bo w zapytaniu pojawia się "anio�" a adres jest Anio%C5%82.html, jak wpiszę go ręcznie: Anio%B3.html to wtedy zapytanie jest OK.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Ok,

Przed wysłaniem koduję urldecode() przy przechwytywaniu dekoduję urlencode(), i w zapytaniu zamiast ??? dostaję: "anio%E5%82", ale to nie rozwiązuje problemu, bo nadal nie zwraca wyników.

EDIT.

I teraz bym musiał zamieniać:

str_replace("%E5%82", "ł", $slowo);

, wg. mnie to jest konwersja UTF8_2_WIN1250, ale jak próbuję ją zastosować, to nic nie daje.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Na samym początku kodu strony Wysyłaj nagłówek:

<?
header('Content-Type: text/html; charset=utf-8');
?>

A tak poza tym to można przekazywać parametr w zmiennej z polskimi literami przykład: TestowY

Strona demo z obsluga .htaccess o wpisie RewriteRule ^(.*).html$ kodowanie.php?nazwa=$1 [L]

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Na samym początku kodu strony Wysyłaj nagłówek:
Niestety to nie rozwiązało problemu.
Strona demo z obsluga .htaccess o wpisie RewriteRule ^(.*).html$ kodowanie.php?nazwa=$1 [L]
Tak, mam to zrobione.

PS. Mógłbyś pokazać kod pliku: kodowanie.php, konwertujesz tam coś?

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

WIN1250_2_UTF8($_GET['slowo']);
To jest zbędne. Anio%C5%82.html jest w kodowaniu UTF-8 i nic z tym nie trzeba robić, pod warunkiem że znaki w bazie są zapisywane w tym samym kodowaniu.

Gdybyś podał adres to byłoby łatwiej :D

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, wywaliłem to kodowanie, ale nadal dostaję w zapytaniu: anio%E5%82, choć wszędzie jest UTF-8, więc obawiam, się, że zamiana:

str_replace("%E5%82", "ł", $slowo);

.. będzie tylko pozornie dobra. Adres: localhost, spróbuj może uda Ci się wejść.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

PS. Mógłbyś pokazać kod pliku: kodowanie.php, konwertujesz tam coś?
Cały kod wygląda tak -> kodowanie.txt [zobacz jako źródło albo zapisz] i jak Widać działa prawidłowo bez dodatkowych akcji...

Strona jest zapisana w kodowaniu UTF-8

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie nieco sprawa się trochę komplikuje, jak nie używam urldecode urlencode to dostaję ??, a jak używam to dostaję w %E5%82, i do tego dochodzi cała struktura skryptu, którą przerabiam, a dokładniej dodatkowe funkcje na klasach.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie nieco sprawa się trochę komplikuje
Jak się domyślam chodzi o linkowanie na stronie i przekazywanie w parametrze do zapytania do bazy jakiegoś tam ciągu znaków zawierające polskie litery czyli dokładnie to samo realizuje mój kod demo tylko, że "na sztywno".

Wiec jeśli w wyniku zapytania do bazy tworzone są linki w kodzie XHTML które zawierają w adresie strony polskie znaki <a href="Anioł.html">Anioł</a>

dostajemy w zmiennej <? echo $_GET['nazwa']; ?> też polskie znaki które możemy bezpośrednio wstawic do zapytania

mysql_query(" SELECT * MojaTabela WHERE nazwa = '$_GET['nazwa']' ");

Wiec zasada zostaje taka sama... Chyba, że jekieś inne ustawienia ma serwer gdzie sie hostujesz ...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wiec zasada zostaje taka sama... Chyba, że jekieś inne ustawienia ma serwer gdzie sie hostujesz ...
Tak dokładnie to przebiega, ale popatrz na link który dałem, zamiast polskich znaków w zmiennej GET dostaję "??", a hostuję się u siebie, na Krasnalu.

EDIT.

Znalazła się przyczyna, jednak mój localhost coś mieszał. Teraz już jest OK, dziękuję wszystkim za pomoc.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności