PHP - brak polskich znaków, utf-8

0

Witam.

Stworzyłem serwis internetowy na bazie HTML (strona i podstrony w sensie układu i wyglądu), PHP (funkcjonowanie strony i mechanizm podmiany podstron) oraz CSS (sterowanie stylami elementów strony).
Wszystko działa zgodnie z planem poza jedną rzeczą:
tekst (tytuł strony lub podstrony) na karcie przeglądarki internetowej wyświetla się bez polskich znaków (w miejscu "polskich liter": ą, ę... jest dziwny pytajnik).

W kodzie html w sekcji <head> mam normalny zapis:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
i w treści strony polskie znaki są.

W plikach php miałem do niedawna następujące zapisy:
$tytul = "Podstrona x";
$tytul = ("windows-1250","utf-8",$tytul);

a w kodzie html w sekcji <head> taki zapis:
<title><?php echo $tytul; ?></title>

Chodziło o to, aby każda podstrona miała inny tytuł wyświetlany na karcie przeglądarki.
I to działało normalnie i z polskimi znakami wszędzie, do jakiegoś czasu.
Potem nagle bez zmiany czegokolwiek strona przestała się otwierać i wyświetlała komunikat:
Parse error: syntax error, unexpected ',' in ... on line ...
Na jakimś zagranicznym forum znalazłem info, że z zapisu:
$tytul = ("windows-1250","utf-8",$tytul);
należy usunąć oba przecinki i zastąpić je kropkami, czyli:
$tytul = ("windows-1250"."utf-8".$tytul);

I po tej zmianie strona na nowo działa, ale na karcie przeglądarki brak polskich znaków.
Skoro nic nie zmieniałem w kodzie html i php, to musi to być wina jakichś zmian w przeglądarce, windowsie... jakichś aktualizacji... tak sądzę.

Nic nie daje ani skasowanie tego zapisu:
$tytul = ("windows-1250","utf-8",$tytul);
ani skasowanie samego słowa windows-1250 z tego zapisu.

Co to może być?

0

Tytuł (title) strony nie ma nic do kodowania. Nie rób stronek kodowanych w windows-1250 (relikt przeszłości) .Użyj tego w head
<meta charset="utf-8" />
a w title - wsadzaj tylko tekst którego potrzebujesz.
Przykład

<html>
    <head>
        <meta charset="utf-8" />
        <title>Żółw</title>
   </head>
   <body>
    ...
    </body>
</html>
0
bartekbartek napisał(a):

Witam.

Stworzyłem serwis internetowy na bazie HTML (strona i podstrony w sensie układu i wyglądu), PHP (funkcjonowanie strony i mechanizm podmiany podstron) oraz CSS (sterowanie stylami elementów strony).
Wszystko działa zgodnie z planem poza jedną rzeczą:
tekst (tytuł strony lub podstrony) na karcie przeglądarki internetowej wyświetla się bez polskich znaków (w miejscu "polskich liter": ą, ę... jest dziwny pytajnik).

W kodzie html w sekcji <head> mam normalny zapis:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
i w treści strony polskie znaki są.

W plikach php miałem do niedawna następujące zapisy:
$tytul = "Podstrona x";
$tytul = ("windows-1250","utf-8",$tytul);

a w kodzie html w sekcji <head> taki zapis:
<title><?php echo $tytul; ?></title>

Chodziło o to, aby każda podstrona miała inny tytuł wyświetlany na karcie przeglądarki.
I to działało normalnie i z polskimi znakami wszędzie, do jakiegoś czasu.
Potem nagle bez zmiany czegokolwiek strona przestała się otwierać i wyświetlała komunikat:
Parse error: syntax error, unexpected ',' in ... on line ...
Na jakimś zagranicznym forum znalazłem info, że z zapisu:
$tytul = ("windows-1250","utf-8",$tytul);
należy usunąć oba przecinki i zastąpić je kropkami, czyli:
$tytul = ("windows-1250"."utf-8".$tytul);

I po tej zmianie strona na nowo działa, ale na karcie przeglądarki brak polskich znaków.
Skoro nic nie zmieniałem w kodzie html i php, to musi to być wina jakichś zmian w przeglądarce, windowsie... jakichś aktualizacji... tak sądzę.

Nic nie daje ani skasowanie tego zapisu:
$tytul = ("windows-1250","utf-8",$tytul);
ani skasowanie samego słowa windows-1250 z tego zapisu.

Co to może być?

Instrukcja w kodzie php:
$tytul = ("windows-1250","utf-8",$tytul);
została znaleziona na jakimś forum zagranicznym i miała służyć własnie temu, aby w karcie przeglądarki wyświetlały się polskie znaki, gdyż pierwotnie bez tej instrukcji zamiast polskich znaków były krzaczki.

0

W sekcji <head> w html mam:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
(nie mam nigdzie w html żadnego zapisu windows-1250).
Na stronie polskie znaki są prawidłowo.
Tylko w tytule karty przeglądarki jest źle.
Gdyby nie to, że niektóre podstrony mają tytuł do wyświetlania (nie tytuł strony w kodzie czy pliku, bo tu oczywiście nie stosuje polskich znaków), który zawiera znaki polskie np: "Moja strona - Wiadomości ze świata" problemu nigdy bym nie zauważył.

0

A skąd masz te dane w title? z bazy danych? Jeśli tak to może w bazie masz inne kodowanie i stąd krzaczki.

frm.PNG

0

Dane w title mam z plików php, tj. każda podstrona ma swój plik php (dla mechanizmu podmiany podstron) i tam mam zapis:
$tytul = "Podstrona x";
(między "" są oczywiście polskie znaki).
Jak tworzę nową podstronę, to tworzę nową podstronę w html (treść) i do niej plik php i tam nadaję tytuł do wyświetlania w przeglądarce.

ps.
cytować oczywiście siebie nie zamierzam, coś "przeskoczyło" na stronie forum.

Tytułów podstron w html, poza stroną główną (strukturalną), to w ogóle nawet nie mam, ponieważ zapis w sekcji <head>:

<title><?php echo $tytul; ?></title> pochodzi z języka php, i tylko tam następuje komunikacja - tytuł strony nadawany jest w zależności od parametru tytul z plików php. Gdybym miał witrynę robioną tylko w html, to oczywiście nadałbym każdej podstronie inny tytuł z polskimi znakami i zapewne by się wyświetlał prawidłowo, ale mam witrynę zrobioną w php.
0

Przede wszystkim postaw sobie pytanie - na jakim kodowaniu mam się opierać? Czy to jest istniejący projekt czy dopiero zaczynasz?
Anyway.... jeśli w bazie masz zakodowane teksty w jakimś latin - to zmień (o ile nie popsuje Ci to projektu) na np. utf8_polish_ci
Kolejna sprawa jeśli składasz taką stronkę z oddielnych plików html i php - to możesz mieć taką sytuację - gdzie masz np 3 kodowania:

  • plik php może być zapisany jako windows1250
  • dane przekazywanego do tego phpa mogą być np w latin1
  • Twój kod html mieć utf8

Musisz zrobić tak by było jedno kodowanie - co chodzi o zawartość pliku to możesz skonwertować istniejący plik do utf8 (notepad++), lecz pamiętaj że to może Ci zgubić istniejące ogonki.

0

No właśnie, nie rozumiem istoty spójności tych kodowań i nie znam się na tym.
Czy wyświetlany tekst na mojej witrynie zależny jest od edytora kodu, jakiego używam, np. Notepad, notatnik, FrontPage???
Otwieram sobie pliki w różnych edytorach w zależności od potrzeb.

Witryna jest kompletna i działała prawidłowo:
1/ w kodzie html miałem i mam zapis o utf-8 - tylko jeden zapis w sekcji <head> tylko na stronie głównej - strukturalnej; na tej stronie inne podstrony ładowane są poprzez polecenie z php *include * z parametrem - i te podstrony nie mają już żadnej informacji o utf-8, ani nawet tytułów title;
2/ w plikach php jedyne zapisy to 2 parametry podstrony: nazwa (dla załadowania treści) i tytuł (dla załadowania tytułu do karty przegladarki).

Pierwotnie na karcie przeglądarki tytuł wyświetlał się bez polskich znaków (krzaczki), więc wprowadziłem do każdego pliku php zapis:
$tytul = ("windows-1250","utf-8",$tytul);
i polskie znaki się pojawiły.
Witryna działała przez rok prawidłowo. Po roku, bez żadnej ingerencji w kod, nagle witryna się nie otwarła - przeglądarka wyświetliła komunikat:
Parse error: syntax error, unexpected ',' in ... on line ...
Zamianiłem zapis (jak zasugerowano):
$tytul = ("windows-1250","utf-8",$tytul);
na zapis:
$tytul = ("windows-1250"."utf-8".$tytul);
i witryna znów się otwarła, ale bez polskich znaków TYLKO na kartach przeglądarki - w treści jest wszystko OK.

Skoro niczego nie zmieniałem w kodzie, kodowaniach, to musi to być wina zmian ustawień po stronie przeglądarki, windowsa, google, mojego komputera...
Przez rok wszystko działało i nagle przestało.

0

Tak, edytor ma znaczenie - np zwykły notatnik w windowsie nie rozpoznaje znaków końca linii z linuxa https://pl.wikipedia.org/wiki/Koniec_linii
https://superuser.com/questions/294219/what-are-the-differences-between-linux-and-windows-txt-files-unicode-encoding

Odnosząc się do Twoich punktów:

  1. Tu wg mnie masz dobrze - w jednym miejscu w head masz utf8 i styknie.
  2. Otwórz problematyczne pliki za pomocą Notepad++ i skonwertuje je na utf8 (sprawdź czy polskie ogonki nie zmieniły się w krzaczki). Ogólnie to jeszcze pojawia się kwestia https://pl.wikipedia.org/wiki/BOM_(informatyka) - ale to też w notepad++ ogarniesz.
0

W każdym edytorze: FrontPage, notatnik, Notepad++, Word tekst kodu wyświetla się co do polskich znaków jednakowo, prawidłowo.
Pomijam fakt, że tabulatory zamieniane są w widoku kodu na spacje itp., ale to nie wpływa przecież na treść kodu.

W Notepad++ przy ustawieniu opcji kodowania w ustawieniach na utf-8 czy utf-8 z bom czy bez bom nie dziej się nic.
Co to znaczy skonwertować plik php do formatu utf-8?
Plik tekstowy to zapis znaków.
Chyba nie jest tak, że treść kodu (nie wygląd w podziale na wiersze, akapity itp.) zmienia się w zależności od edytora?
Co najwyżej może się zmienić wyświetlanie tego tekstu na ekranie w danym programie, edytorze.

Skoro polskie znaki nie wyświetlają się w przeglądarce, a ja je wpisałem, to coś musiało zmienić w przeglądarce, windowsie... tym bardziej, że przedtem działało dobrze.

A co z taką poradą:
https://www.forum.optymalizacja.com/topic/51846-jak-zmieni%C4%87-kodowanie-pliku-php

Może trzeba dopisać w plikach php komendę analogiczną do komendy utf-8 w html i tyle?
Tylko jaka to komenda?

0

DZIAŁA

Zamieniłem w pliku php zapis

$tytul = ("windows-1250","utf-8",$tytul);

na

$tytul = iconv('iso-8859-2','utf-8',$tytul);

i działa

zgodnie z tą poradą:
https://www.forum.optymalizacja.com/topic/51846-jak-zmieni%C4%87-kodowanie-pliku-php

Tylko, czy to wystarczy raz na zawsze. Oby.

0

Czy plik w którym zawarta jest już konkretną wartość title (jak pisałeś jest to oddzielny plik php) otwierałes w notepad++ i brałeś opcje konwertuj na utf8? Pamiętaj by potem zapisać tako plik. - axelbest dziś, 14:33

Absolutnie nie.
Żadnego pliku php, ani html, ani innego w niczym nie konwertowałem do utf-8.
Podejrzewam, że obecne przeglądarki działają tak, że, aby wyświetlały wszędzie polskie znaki, które pobierają z treści plików html i php, należy zawsze:
1/ w pliku / plikach html zapisać w <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

2/ w pliku / plikach php zapisać

$parametr = iconv('iso-8859-2','utf-8',$parametr);

gdzie *parametr *to zbiór wszelkich danych tekstowych z kodu php do wyświetlania gdziekolwiek na stronie.

To byłby chyba jakiś absurd, gdyby treść kodu programu zmieniała się w zależności od edytora, w którym ten kod otworzymy.
Zmieniać to może się co najwyżej widok i wygląd tego kodu oraz poszczególnych znaków i liter, zgodnie z możliwościami, które przewidział autor programu: edytora, przeglądarki...

W każdym razie to działa - przynajmniej w przeglądarce FF i Chrome. Innych nie sprawdzałem.

0
bartekbartek napisał(a):

Podejrzewam, że obecne przeglądarki działają tak, że, aby wyświetlały wszędzie polskie znaki, które pobierają z treści plików html i php, należy zawsze:
1/ w pliku / plikach html zapisać w <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

2/ w pliku / plikach php zapisać

$parametr = iconv('iso-8859-2','utf-8',$parametr);

gdzie *parametr *to zbiór wszelkich danych tekstowych z kodu php do wyświetlania gdziekolwiek na stronie.

Bzdura, obecne przeglądarki tak nie działają.Przeczytaj co robisz funkcją iconv.

bartekbartek napisał(a):

To byłby chyba jakiś absurd, gdyby treść kodu programu zmieniała się w zależności od edytora, w którym ten kod otworzymy.
Zmieniać to może się co najwyżej widok i wygląd tego kodu oraz poszczególnych znaków i liter, zgodnie z możliwościami, które przewidział autor programu: edytora, przeglądarki...

Tak, to sprawdź sobie załączniki. Ten sam plik otworzony dwoma edytorami. W jednym (starszym) edytorze jest poprawnie wyświetlane a w drugim nie.

bartekbartek napisał(a):

W każdym razie to działa - przynajmniej w przeglądarce FF i Chrome. Innych nie sprawdzałem.
Działać działa ale rozwiązanie jest takie z typu "taśma klejąca".

Twoim problemem nie jest niezgodność czy sposób działania przeglądarek tylko sam sposób tworzenia strony. Stronę HTML masz w kodowaniu (przykładowo) UTF-8 (tam też deklarujesz takie kodowanie) a pliki PHP zapisane ze znakami zgodnymi z kodowaniem ISO-8859-2. Moim zdaniem wina leży po stronie niewłaściwej konfiguracji edytorów. Przykładowo stworzysz teraz plik PHP w programie gdzie domyślnym kodowaniem jest Win-1250 i co... będziesz każdy plik opatrywał funkcją iconv ?

0

Nie znam się na tych kodowaniach, nawet nie wiem, co to tak naprawdę jest to całe kodowanie, ani instrukcja iconv.
Potrzebuje stworzyć stronę w technice html i php w ten sposób, aby mieć pewność, że strona wyświetli się w maksymalnej ilości przeglądarek maksymalnej ilości odbiorców zgodnie z moim projektem - wyglądem i treścią, a te dwa zapisy jak na razie to umożliwiają - i chyba nawet gwarantują (mam nadzieję).

To co piszesz tu:

Tak, to sprawdź sobie załączniki. Ten sam plik otworzony dwoma edytorami. W jednym (starszym) edytorze jest poprawnie wyświetlane a w drugim nie.

mówi właśnie o tym, o czym napisałem: że kod programu JEST WYŚWIETLANY inaczej w różnych edytorach, a nie ma w nich inną treść!

Jeśli w pliku html lub php napisałem wyraz ŻÓŁĆ naciskając na klawiaturze klawisze ZOLC z Altem, to to jest treść, a jak te pliki otworzę w jakimś starym edytorze i zobaczę na ekranie wyraz ZOLC, albo krzaczki, to czy oznacza to zmianę treści?
Jeśli tak, to byłby to rzeczywiście jakiś absurd.

Przesyłam pliki php i html koledze, on je otwiera w swoim jakimś edytorze nie ingerując w treść (tylko je wyświetla na ekranie), odsyła mi, a tu strona wygląda u mnie już inaczej w tej samej przeglądarce, ponieważ treść słów się zmieniła?

To musi być wina interpretacji do wyświetlania plików php, html... przez poszczególne przeglądarki, edytory...
Tak zakładam, że jak za kilka lat zamiast FF i Chrome najpopularniejszą przeglądarką będzie ABC i jej twórca stworzy sobie jakieś nowe mechanizmy nie obsługujące starych formatów, do aby stare strony się tam wyświetlały, trzeba będzie mieć jakąś "przejściówkę", czyli wpisać do kodu jakąś komendę, polecenie...

Przykładowo stworzysz teraz plik PHP w programie gdzie domyślnym kodowaniem jest Win-1250 i co... będziesz każdy plik opatrywał funkcją iconv ?

No tak właśnie wszędzie zalecają, np. w html - dopisuj w sekcji <head> takie zapisy (w które w ogóle nie wnikam) jak:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

No to się stosuję, by strona działała.

0

Żeby poprawnie się wyświetiło to kodowanie musi się zgadzać. Np.:

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. Przy wysyłaniu bajtów albo w pliku ustaw UTF-8 (z reguły bez BOM się wysyła jak kodowanie jest znane)

Jak plik zakodujesz w iso-8859-2 i w htmlu użyjesz tego samego to też będzie działać zakładająć, że klient (przeglądarka) wie co to iso-8859-2

Jak masz jakieś dane z innego miejsca w środku wygenerowanego dokumentu to albo muszą mieć te same kodowanie albo trzeba je przekonwertować.

Edytory tekstowe nie wiedzą nic o kodowaniu dopóki im nie powiesz jakie jest albo jak poprawnie zgadną (czasami ta informacja jest przechowywana, ale nie zawsze). W przypadku kodowania utf-8 z BOM praktycznie każdy edytor powinien otworzyć taki plik poprawnie, bez BOM większość edytorów zgadnie poprawnie że to UTF-8. Jeśli używasz stron kodowych (charset, np. iso-8859-2) a nie Unicode (np. UTF-8, UTF-16LE, UTF-32) to edytor prawie zawsze musi zgadywać - w przypadku plików jak XML, format pliku może zawierać metadane które pomgają edytorowi wybrać jeśli z nich skorzysta.

BOM powinien być tylko i wyłącznie przed całym dokumentem, a nie w środku (jeśli dynamicznie dodajesz zawartość pliku to trzeba na to uważać)

0
bartekbartek napisał(a):

mówi właśnie o tym, o czym napisałem: że kod programu JEST WYŚWIETLANY inaczej w różnych edytorach, a nie ma w nich inną treść!

A kto pisał o zmianie treści. Podsyłając te dwa screeny chciałem Tobie pokazać, że TA SAMA treść może być wyświetlana inaczej w różnych edytorach. To tak jakbyś miał maszynę "dekodującą" gdzie musisz podać odpowiedni klucz do odszyfrowania. Masz JEDEN plik, który przy użyciu prawidłowego klucza będzie wyświetlał się normalnie a przy użyciu błędnego klucza wyjdą już nam "krzaczki".

Popatrz sobie na to inaczej. Tabela ASCII ma 127 znaków (tylko). Czyli - literka "A" dla Ciebie jest literką "A" a dla komputera (nie dla przeglądarki) jest to ZNAK o kodzie (DEC) 65. I to wszystko. A teraz pomyśl, gdzie umieścić znaki polskie, japońskie, norweskie itp.? No to ktoś tam kiedyś wpadł na pomysł, żeby dodać 1bit do istniejącego ASCII (ASCII było zestawem 7 bitowym) i już można było mieć 255 znaków. To ciągle mało żeby obsłużyć wszystkie języki świata. No to wymyślono standardy kodowania właśnie takie jak ISO 8852, UTF-8, Win-1250. I teraz kod (całkiem przykładowo podaję) 160 (DEC) w jednej standardzie kodowanie wyświetlać będzie znak Ł a w drugim đ :)

0

Nie znam się na tych definicjach i pojęciach dokładnie.
Interesuje mnie tylko dwie rzeczy:
1/ stworzyć witrynę w technologii html, php, css... (i innych technikach, jeśli uznam, że są mi potrzebne, bo dają określone możliwości), która to witryna w maksymalnej ilości przeglądarek u maksymalnej ilości użytkowników będzie wyglądać TAK, JAK ZAPROJEKTOWAŁEM, co do i WYGLĄDU i TREŚCI i WYŚWIETLANIA ZNAKÓW
2/ móc otworzyć wszelkie pliki tej witryny (dla widoczności KODU) w edytorach, w których będzie 100% pewności, że tekst, który jest tym kodem, wygląda tak, jak go wpisałem, czyli jak wpisałem gdzieś ŻÓŁW (bo był taki zamiar użycia tego słowa), to widzę, że w kodzie wyraz ŻÓŁW, a nie ZOLW.

Korzystam z różnych edytorów: FrontPage, Notepad++, notatnik, nawet Word - dany plik otwieram, gdzie mi wygodniej.
Jeśli się okaże, że np. Word otwiera mi plik html i nie wyświetla tam polskich znaków, to albo szukam ustawień opcji Worda, bo może to tylko kwestia ustawień wyświetlania polskich znaków (czyli tego kodowania), albo z tego edytora nie korzystam.
Jak na razie wszelkie pliki html, php, css wyświetlają mi się identycznie co do polskich znaków i we FrontPage, i w Notepad++, i w notatniku i nie ma z tym problemu i nigdy nie było.
Jedyny problem z wyświetlaniem pojawił się w przeglądarce, a skoro został rozwiązany, to temat zamknięty.
Witryna ma wyglądać tak, jak zaprojektował autor, i wyświetlać treść tak, jak zaprojektował autor - a w jakich edytorach widzę pliki tej witryny i jak one wyglądają, to inna sprawa.

2

Pisanie Korzystam z różnych edytorów: FrontPage, Notepad++, notatnik, nawet Word - dany plik otwieram, gdzie mi wygodniej.to tak jak byś miał pretensję że chcesz jeździć 300km/h - ale jeździsz różnymi pojazdami, ferrari, porsche, Fiat 126p i stara syrenka. Nie da się. Nawet programy odtwarzania muzyki mające inne algorytmy potrafią taką samą mp3 odwtorzyć zupełnie inaczej.

Podkreślę jeszcze - że jeśli edytor nie obsługuje np arabskiego kodowania to wyświetli krzaczki i nic z tym nie zrobisz. Jak nie chcesz mieć krzaczków to nie używaj liter innych niz domyślne A-Z.

Zrozum, że mając plik w formacie txt/php/cokolwiek który został napisany z innym zestawem znaków niż te które dany edytor rozpoznaje to z g..wna bata nie ukręcisz. Po prostu czasami nie da się.

Twój problem - aby Twoja strona była dobrze wyświetlana wszędzie, to odwieczny problem webdeveloperów. A to błędy w css'ie na IE, a to problemy z htmlową składnią na safari, albo na firefoxie padding z cssa jest inny niż na starym chromie.... Nie unikniesz tego - chyba że robisz prostą stronę. A zakładam że taką robisz, więc otwieraj pliki w jednym edytorze, konwertuj wszystko na utf8 i nie będziesz miał problemu. Naprawdę, bo obecnie uparcie stoisz przy swoim stanowisku, że z Twoim kodem i plikami jest wszystko ok, tylko te edytory takie wredne. Napisaliśmy Ci już kilka razy co powinieneś zrobić, ale jeszcze powtórzę:

  1. Otwieraj pliki tylko w jednym edytorze
  2. Stosuj to samo kodowanie
  3. Jak robisz coś w phpie/htmlu i cssie to nie korzystaj z tych edytorów FrontPage, Notepad++, notatnik, nawet Word tylko ściągnij sobie jakieś IDE i rób tylko w nim. Np darmowy netbeans wystarczy Ci - tylko tez pamietaj by ustawic w projekcie utf8
  4. Kod który podałem w jednym z poprzednim postów działa poprawnie wszędzie, więc zrób to analogicznie.
  5. Jak dalej będziesz miał problem to wrzuć tutaj pliki ze swoim projektem i wtedy Ci lepiej pomożemy.
0

Po pierwsze, nie mam żadnych pretensji do tego, że w różnych edytorach tekst kodu **może ** (a nie musi) wyświetlać się inaczej, a po drugie nie mam nawet takiego problemu, że tekst kodu w różnych edytorach wyświetla mi się inaczej, bo w tych wszystkich edytorach tekst kodu wyświetla mi się dokładnie tak samo.
Jedyne, czym różnią się, i to czasem tylko, te edytory pod względem wyświetlania tekstu kodu, jest **układ **akapitów, tabulacji i znaków końca linii, a to w niczym nie przeszkadza, bo nie ingeruje w żaden sposób w **treść **kodu.
To oczywiste, że różne edytory będą wyświetlać tekst kodu czasem różnie pod względem układu tekstu albo nie poradzą sobie z wyświetlaniem niektórych znaków.

Z edytora FrontPage korzystam i warto korzystać, bo to jedyny chyba edytor, do którego można hurtowo kopiować tekst z Worda (i innych źródeł) na zasadzie WYSYWIG = kopiuj / wklej oraz edytować tam tekst jak w Wordzie (w dużym stopniu), a dopiero potem ingerować w styl akapitów, obiektów w samym kodzie.
Oczywiście layout strony możliwy jest do sprawdzania na etapie projektowania tylko w przeglądarce, choć dla prostych stron widok strony we FrontPage może być identyczny co w przeglądarce, co jest plusem.

A witrynę akurat mam skomplikowaną pod względem i stylów, i treści i mechanizmów dynamicznych (linki, podstrony, dynamiczna zmiana rozmiarów pól itd.), dlatego korzystam z html, php, css, js jednocześnie.
I wszystko działa bardzo dobrze: i treść i wygląd i zachowanie elementów witryny w przeglądarce są w 100% zgodne z planem, a we wszystkich edytorach tekst plików i kod źródłowy wyświetla się identycznie.

Problem był tylko z wyświetlaniem polskich znaków w SAMEJ PRZEGLĄDARCE.
Skoro zapis *iconv *go rozwiązał, to jest ok - nie wnikam już w żadne "teoretyczne" kwestie kodowań.
Ktokolwiek wejdzie na moją stronę, widzi ją zgodną z zamierzeniem autora.

0

OK.
Problem na razie mam rozwiązany, prawdopodobnie docelowo.
Dzięki za wszelkie informacje o tych kodowaniach.

0

Jeśli coś by szwankowało u Ciebie w kodowaniu strony, to zamiast używać jakiś iconv, to możesz użyć:

PHP. Use the header() function before generating any content, e.g.:
header('Content-type: text/html; charset=utf-8');

https://www.w3.org/International/articles/http-charset/

0

Zamieniłem zapis

$tytul = iconv('iso-8859-2','utf-8',$tytul);

na ten header

header('Content-type: text/html; charset=utf-8');

i nie działa.

Ale dzięki za link.
Może to rzeczywiście jest zależne trochę od edytora.
W moich edytorach wszystko się zawsze wyświetlało prawidłowo, a chodzi o to, by wyświetlało się dobrze w przeglądarce, co komenda *iconv *uczyniła.

2

Kodowanie znaków to sposób ich zapisu binarnego. Tak jak ktoś wcześniej pisał, literka A to w ASCII liczba 65. Problem pojawia się, kiedy chcemy zapisać np. literę Ą. UTF8 działa w ten sposób, że dla znaków standardowych używa 1 bajtu, ale już np. dla Ą, potrzebuje 2 bajtów. Nie pamiętam jak działa iso-8859-2, ale na pewno inaczej.
Twój problem polega na tym, że część plików masz zapisanych w utf8 a część w iso-8859-2. Na pierwszy rzut oka ciężko Ci to zobaczyć bo edytory są na tyle mądre, że wiedzą wg. którego kodowania mają Ci pokazywać tekst. Dlatego jak otworzysz każdy plik z osobna to wydaje się, że jest wszystko ok, ale nie jest. W jednym pliku literkę Ą możesz mieć zapisaną jako np. 1010 1010 1010 1010 (załóżmy, że utf8) a w innym tą samą literkę jako 0101 0101 0101 0111 (załóżmy, że iso-8859-2).
Gdyby przeglądarka wyświetlała tylko jeden plik to nie byłoby problemu. Ale Ty w PHP łączysz te pliki w jeden (który przesyłany jest do przeglądarki) i przeglądarka musi się zdecydować wg którego kodowania wyświetlać znaki. Dodając znacznik META mówisz jej, jak ma być. Ustawiłeś utf8 a przeglądarka dostaje ciąg znaków 0101 0101 0101 0111 i wtedy wyświetla krzaczki a nie Ą. Funkcja iconv zmienia właśnie binarną reprezentację stringu, dlatego problem "znika".
Podsumowując, najlepszym rozwiązaniem jest przejrzeć wszystkie pliki i upewnić się, że wszystkie zapisane są w UTF8. Wtedy będziesz mógł zrezygnować z wszystkich wywołań iconv i zawsze będzie Ci to działać jak należy.

PS. Używanie tak dużej ilości edytorów sprzyja bałaganowi w kodowaniu. Edytor A może otworzyć prawidłowo plik utf8, ale zapisać go później jako np. iso-8859-2. Dobry edytor nie powinien się tak zachowywać. Prawdopodobnie narzędzia od microsoft robią Ci taki bałagan ;)

0

arfen.radom.pl/Blog/polskie-znaki-w-php-prosty-przyklad/
Może się przyda

0
bartekbartek napisał(a):

Po pierwsze, nie mam żadnych pretensji do tego, że w różnych edytorach tekst kodu **może ** (a nie musi) wyświetlać się inaczej

To nawet nie chodzi o to, że edytor może wyświetlać ten kod inaczej, żel że może go później również inaczej zapisać. Z tego co pamiętam FrontPage (łza się w oku kręci) zapisywał poprawnie tylko pliki stworzone przez niego samego, a wszystkie inne poprawiał po swojemu. A co Word może zrobić z biednym HTML-em, to się wolę nawet nie zastanawiać. Chociaż może współczesne wersje lepiej sobie z nim radzą.

0
arczinosek napisał(a):

Twój problem polega na tym, że część plików masz zapisanych w utf8 a część w iso-8859-2. Na pierwszy rzut oka ciężko Ci to zobaczyć bo edytory są na tyle mądre, że wiedzą wg. którego kodowania mają Ci pokazywać tekst. Dlatego jak otworzysz każdy plik z osobna to wydaje się, że jest wszystko ok, ale nie jest. W jednym pliku literkę Ą możesz mieć zapisaną jako np. 1010 1010 1010 1010 (załóżmy, że utf8) a w innym tą samą literkę jako 0101 0101 0101 0111

Dawno już nie spotkałam się z podobnymi problemami, ale w dawnych czasach radosnej twórczości odnośnie stron kodowych stworzono taki genialny program:
http://www.gzegzolka.com/

Można sobie zażyczyć, żeby wszystkie plik z danego katalogu przekodować na określone kodowanie niezależnie od tego jakie mają aktualnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1