Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Notepad++ i kodowanie plików php
Forum PHP.pl > Forum > Przedszkole
Rostov
Dlaczego, mimo zaznaczonego w ustawieniach Notepad++ kodowania jako 8859-2, po otwarciu każdego pliku php w tym programie, mam zaznaczone domyślnie "Koduj w ANSI"? Za każdym razem muszę zmieniać zestaw znaków na 8859-2, bo inaczej po zapisaniu pliku mam problemy z krzaczkami :/
pedro84
Pliki zapisuj w UTF-8 (bez BOM) i ustaw sobie domyślnie, żeby dla plików otwieranych też takie kodowanie ustawiał.
Rostov
Może wyjaśnię o jaki kod chodzi:

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<link rel="stylesheet" href="../../../../../css/styl.css">
<meta name="keywords" content="blog, dziennik">
<title>CZARNOSZARY - dodaj komentarz</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/index.rss">

</head>
<body style="background-image: url('../../../../../grafika/tlo.jpg');">
<br /><div align="center"><b> Zażółć gęślą jaźń </b> </div><br />
<?php
if (count($_POST))
{
   ////////// USTAWIENIA //////////
   $email = 'rostov@o2.pl';   // Adres e-mail adresata
   $subject = ' 17.07.2012 || 18:13 <=> Zażółć gęślą jaźń';   // Temat listu
   $message = '<b><br /><br />Dzięki za komentarz! Pojawi się po zatwierdzeniu przez moderatora;-)<br /> <br /><a href="../../../../../../index.htm">[strona główna]</a>';   // Komunikat
   $error = 'Wystąpił błąd podczas wysyłania formularza';   // Komunikat błędu
   $charset = 'iso-8859-2';   // Strona kodowa
   /////////////////////////////
  
   $head =
      "MIME-Version: 1.0\r\n" .
      "Content-Type: text/plain; charset=$charset\r\n" .
      "Content-Transfer-Encoding: 8bit";
   $body = '';
   foreach ($_POST as $name => $value)
   {
      if (is_array($value))
      {
         for ($i = 0; $i < count($value); $i++)
         {
            $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
         }
      }
      else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
   }
   echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
}
else
{
?>
<form action="?" method="post">
<table width="300" align="center">
<tr><td><b>Imię lub ksywa:</b></td>
<td><input type="text" name="name" value="" maxlength="80" size="30"></td>

<tr><td><b>E-mail:</b></td>
<td><input type="text" name="email" value="" maxlength="50"
size="30"></td></tr>

<tr><td><b>WWW:</b></td>
<td><input type="text" name="www" value="" maxlength="50"
size="30"></td></tr>

<tr><td><b>Komentarz:</b></td></td>
<td><textarea name="message" cols=30 rows=15></textarea></td></tr>
</table>
<input type="submit" value="Wy&#x015b;lij" border=0>

</form>
<?php
}
?>

</body>
</html>


Gdy przestawiam na "Koduj w UTF-8 (bez BOM)" pojawia mi się taka oto sieczka:

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<link rel="stylesheet" href="../../../../../css/styl.css">
<meta name="keywords" content="blog, dziennik">
<title>CZARNOSZARY - dodaj komentarz</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/index.rss">

</head>
<body style="background-image: url('../../../../../grafika/tlo.jpg');">
<br /><div align="center"><b> Za࠳Ԧ g귬Ѡjaݱ </b> </div><br />
<?php
if (count($_POST))
{
   ////////// USTAWIENIA //////////
   $email = 'rostov@o2.pl';   // Adres e-mail adresata
   $subject = ' 17.07.2012 || 18:13 <=> Za࠳Ԧ g귬Ѡjaݱ';   // Temat listu
   $message = '<b><br /><br />Dzi묩 za komentarz! Pojawi siꡰo zatwierdzeniu przez moderatora;-)<br /> <br /><a href="../../../../../../index.htm">[strona gԳwna]</a>';   // Komunikat
   $error = 'WystҰiӠbӱd podczas wysyԡnia formularza';   // Komunikat bԪdu
   $charset = 'iso-8859-2';   // Strona kodowa
   /////////////////////////////
  
   $head =
      "MIME-Version: 1.0\r\n" .
      "Content-Type: text/plain; charset=$charset\r\n" .
      "Content-Transfer-Encoding: 8bit";
   $body = '';
   foreach ($_POST as $name => $value)
   {
      if (is_array($value))
      {
         for ($i = 0; $i < count($value); $i++)
         {
            $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
         }
      }
      else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
   }
   echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
}
else
{
?>
<form action="?" method="post">
<table width="300" align="center">
<tr><td><b>Imiꡬub ksywa:</b></td>
<td><input type="text" name="name" value="" maxlength="80" size="30"></td>

<tr><td><b>E-mail:</b></td>
<td><input type="text" name="email" value="" maxlength="50"
size="30"></td></tr>

<tr><td><b>WWW:</b></td>
<td><input type="text" name="www" value="" maxlength="50"
size="30"></td></tr>

<tr><td><b>Komentarz:</b></td></td>
<td><textarea name="message" cols=30 rows=15></textarea></td></tr>
</table>
<input type="submit" value="Wy&#x015b;lij" border=0>

</form>
<?php
}
?>

</body>
</html>
abort
W menu "format" masz jeszcze opcje konwersji na formaty UTF. Spróbuj może tego. Choć jak nie chcesz utf (dlaczego? utf naprawdę nie boli, sam długo pisałem w 8859-2, ale to już jest prehistoria)

Po drugie, ustaw sobie swoje preferencje:
Ustawienia -> Preferencje -> Nowy dokument - tam ustawiasz znaki końca linii (mac/unix/win), kodowanie i wyświetlanie.
krispak
Ehh... wacko.gif
Jak uzywasz iso to nie kodujesz w UTF. Po utworzeniu dokumentu zapisujesz w iso - czyli dla twojego kodowania wybierasz Format -> Zestaw znaków -> Wschodnioeuropejskie -> ISO 8859-2.
Zadnego kombinowania...
Rostov
Cytat(abort @ 30.07.2012, 22:00:45 ) *
W menu "format" masz jeszcze opcje konwersji na formaty UTF. Spróbuj może tego. Choć jak nie chcesz utf (dlaczego? utf naprawdę nie boli, sam długo pisałem w 8859-2, ale to już jest prehistoria)

Miałem kilka niemiłych niespodzianek kodując w UTF-8 i wolę jednak pozostać przy ISO 8859-2.

Cytat
Po drugie, ustaw sobie swoje preferencje:
Ustawienia -> Preferencje -> Nowy dokument - tam ustawiasz znaki końca linii (mac/unix/win), kodowanie i wyświetlanie.

Otóż właśnie tam mam ustawione kodowanie w ISO 8859-2, jednak po otworzeniu pliku zapisanego wcześniej w ISO, zaznacza mi się Format -> Koduj w ANSI i jeśli nie pamiętam, by przed zapisem zmienić na ISO 8859-2, to po wprowadzeniu choćby najmniejszej zmiany, plik od nowa koduje mi się w ANSI.

Cytat(krispak @ 30.07.2012, 23:52:03 ) *
Ehh... wacko.gif
Jak uzywasz iso to nie kodujesz w UTF. Po utworzeniu dokumentu zapisujesz w iso - czyli dla twojego kodowania wybierasz Format -> Zestaw znaków -> Wschodnioeuropejskie -> ISO 8859-2.
Zadnego kombinowania...

Czyli nie da się tego ustawić domyślnie dla plików *.php?
krispak
Pewnie, ze sie da wink.gif
Ustawienia -> Preferencje -> Nowy dokument -> Kodowanie -> Zaznaczasz liste rozwijana a w niej ustawiasz swoj format
Rostov
Cytat(krispak @ 31.07.2012, 19:30:08 ) *
Pewnie, ze sie da wink.gif
Ustawienia -> Preferencje -> Nowy dokument -> Kodowanie -> Zaznaczasz liste rozwijana a w niej ustawiasz swoj format

Napisałem wcześniej wyraźnie:

Cytat(Rostov @ 31.07.2012, 11:10:11 ) *
Otóż właśnie tam mam ustawione kodowanie w ISO 8859-2, jednak po otworzeniu pliku zapisanego wcześniej w ISO, zaznacza mi się Format -> Koduj w ANSI i jeśli nie pamiętam, by przed zapisem zmienić na ISO 8859-2, to po wprowadzeniu choćby najmniejszej zmiany, plik od nowa koduje mi się w ANSI.

Dodam, że działa to przy plikach *.htm/*.html, ale nie przy *.php.
krispak
Nie dziw sie bo jak sama nazwa wskazuje NOWY DOKUMENT, a przy nowym dokumecie u mnie jakos na php tez dziala. Pliki ktore masz utworzone musisz po prostu zapisac do iso tak jak pisalem wyzej.
Rostov
Cytat(krispak @ 31.07.2012, 19:48:17 ) *
Nie dziw sie bo jak sama nazwa wskazuje NOWY DOKUMENT, a przy nowym dokumecie u mnie jakos na php tez dziala. Pliki ktore masz utworzone musisz po prostu zapisac do iso tak jak pisalem wyzej.

Próbowałem przy tych ustawieniach zapisywać właśnie NOWE pliki php.
Przed zapisem jest ustawione ISO 8859-2, a po zapisaniu i ponownym otwarciu tego samego pliku, znowu pojawia się ANSI :/
abort
Cytat(Rostov @ 31.07.2012, 19:53:29 ) *
Próbowałem przy tych ustawieniach zapisywać właśnie NOWE pliki php.
Przed zapisem jest ustawione ISO 8859-2, a po zapisaniu i ponownym otwarciu tego samego pliku, znowu pojawia się ANSI :/

No dobra, a jakieś polskie znaczki w dokumencie masz? Bo ja zauważyłem u siebie, że jak wybiorę utf bez bom, i dopóki nie użyję polskich znaków, to mam zapisane jako ansi. Ledwie się pojawią polskie znaki, zapisuje w utf. Może u Ciebie jest tak samo?
Rostov
Cytat(abort @ 31.07.2012, 22:12:49 ) *
No dobra, a jakieś polskie znaczki w dokumencie masz? Bo ja zauważyłem u siebie, że jak wybiorę utf bez bom, i dopóki nie użyję polskich znaków, to mam zapisane jako ansi. Ledwie się pojawią polskie znaki, zapisuje w utf. Może u Ciebie jest tak samo?

W pierwszej części tego posta napisałem, o jaki kod pliku *.php chodzi.
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.