Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Includowanie plików w kodowaniu UTF-8
Athlan
post
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Może głupi temat, po przeczytaniu go większość się uśmieje (tak jak ja (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) ale nie ma do tego powodu, bo po głębszym zastanowieniu pewnie na 90% twarzach zniknie śmiech (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Problem jest pierwszego rzędu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ostatnio w moich aplikacjach często pojawia się w kodzie tajemnicza kropka. Zbadałem to, pojawia się przy includowaniu plików kodowanych w UTF8.

Aż prosi się o przykład:

index.php:

Kod
start index
<?php include './plik1.php'; ?>
stop index


plik1.php

Kod
start 1
<?php include './plik2.php'; ?>
stop1


plik2.php

Kod
start 2
stop 2


Oto wygenerowane źródło:

Kod
start index
?start 1
?start 2
stop 2
stop1
stop index


co robią te znaki przed start1 i start2 ? What the fuck? (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) Różnie są przdstawiane, na Operze to kropka w pozycji podobnej do znaku ` . Na firefox wogóle nie widać go w źródle, ale jednak Validator się czepia. Znak pojawia się bezpośrednioprzed wykonywaniem funckji include()/require().

Livedemo: http://mdes.pl/~athlan/unknown_char/ (najlepiej obadać z Opery, ja korzystam z 9.02)
Paczka: http://mdes.pl/~athlan/unknown_char/unknown_char.rar

O co chodzi? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam, Athlan (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Bastion
post
Post #2





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Przyglądając się hexowi plikom które wystawiłeś, można wywnioskować że twój edytor
dodaje jakiś syf na początku pliku

http://www.jarzebski.pl/trash/img0001.png

Otworzyłem Twój plik w swoim edytorze i znak został pominięty, jednak kiedy go naspisałem
również w utf-8 znaku na początku pliku już nie było.

Ten post edytował Bastion 29.12.2006, 10:58:50
Go to the top of the page
+Quote Post
Denver
post
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

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


Walidacja dokumentu w W3.org wypluwa błąd:

Cytat
Byte-Order Mark found in UTF-8 File.

The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.


Oznacza to, że bodajże pierwsze 3 bajty w pliku zakodowanym w UTF-8 zawierają informację o tym, że jest to właśnie UTF-8 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . W przypadku stron internetowych powinno się unikać tych znaków.

Jeśli pracujesz na Windowsie, to pobierz np. Notepada++, w którego menu istnieje możliwość zmiany kodowania pliku z UTF-8 na ANSI (UTF-8 without BOM).

Ten post edytował Denver 29.12.2006, 10:59:01
Go to the top of the page
+Quote Post
Athlan
post
Post #4





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Denver: właśnie tak zrobiłem i działa, wina edytora. Znalazałem kilka wzmianek na ten temat w manualu:

http://pl2.php.net/manual/pl/function.include.php#65837
http://pl2.php.net/manual/pl/function.include.php#64895

EOT

Ten post edytował Athlan 29.12.2006, 11:07:44
Go to the top of the page
+Quote Post
cadavre
post
Post #5





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


Dokładnie tak - edytor. Najczęściej błąd pojawia się przy próbie szybkiej edycji pliku przy jakimś malutkim błędzie - by uniknąć odpalania jakiegoś dużego IDE po prostu sięga się po np. Notatnika Windows. On - owszem - obsługuje UTF-8; jednak dodaje tenże syf na początku każdego pliku. Dlatego też lepiej korzystać z innego edytora do szybkiej edycji. Ja w tym celu używam w/w Notepad++.
Go to the top of the page
+Quote Post
Athlan
post
Post #6





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Validator dodaje notatkę
Cytat
Byte-Order Mark found in UTF-8 File.

The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.


(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 14:01