HTML-lehe kodeering. HTML kodeering. Millise kodeeringuga veebilehte salvestada?

Olen viimased paar tundi veetnud oma veebisaidil HTML 4.01 Stricti testimiseks ja mul on see tegelikult õnnestunud, kuid on veel üks hoiatus, millest ma ei saa lahti. Hoiatus:

Tähemärgikodeering ei sobi!

HTTP päises määratud märgikodeering (iso-8859-1) erineb elemendi väärtusest (utf-8). Kasutan selle kinnituse jaoks HTTP päise väärtust (iso-8859-1).

Üldist teavet märgistiku päise muutmise kohta erinevates võrguvirnades leiate aadressilt http://www.w3.org/International/O-HTTP-charset


2018-05-25 13:30

Server märgib dokumendi HTTP-päistesse selgelt kui ISO-8859-1. Proovige faili default.html salvestada UTF-8 kodeeringuga, kasutades sobivat redaktorit.


2018-05-25 03:07

Olgu, leidsin oma probleemile osalise lahenduse. Kuna hoiatuse põhjustas ainult fail default.html, siis eeldasin, et server teeb sellega midagi erilist selle nime tõttu. Seega lõin uue home.html-faili, mille sisu oli sama sisuga kui vaikimisi.html-fail, ja suunasin .htaccess-faili uuele failile (vt allpool rida 3).

# Kasutage PHP5 vaikerakendusena AddHandler/x-httpd-php5 .php DirectoryIndex home.html AddDefaultCharset UTF-8

See lahendas probleemi ja kõik failid tuvastatakse nüüd UTF-8-na. Ma pole ikka veel kindel, mida server failiga default.html teeb või kus on sellega seotud sätted, kuid kui mu probleem kaob, unustan selle.

Üks levinumaid probleeme, millega algaja silmitsi seisab Veebihaldur(ja mitte ainult algajatele), see probleemid saidil kodeerimisega. Isegi minu jaoks ilmub see veebisaitide loomisel pidevalt " abrakadabra"Aga õnneks tean ma suurepäraselt, kuidas seda probleemi lahendada, nii et panin kõik mõne sekundiga paika. Ja selles artiklis püüan teid sama kiiresti õpetada lahendada saidil kodeerimisega seotud probleeme.

Esimene asi, mida tasub märkida, on see, et kõik "abrakadabra" välimusega seotud probleemid on seotud dokumendi kodeeringu ja brauseri määratud kodeeringu vahelise mittevastavusega. Ütleme, et dokument sisse Windows-1251, kuid millegipärast kuvab brauser UTF-8. Ja sellise lahknevuse allikaks võivad olla järgmised põhjused.

Esimene põhjus

Metasilt on valesti kirjutatud sisu tüüp. Olge ettevaatlik, see peaks alati sisaldama kodeeringut, milles teie dokument on kirjutatud.

Teine põhjus

Tundub, et metasilt on kirjutatud nii, nagu soovite, ja brauser kuvab täpselt seda, mida soovite, kuid millegipärast on endiselt probleeme kodeerimisega. Siin on peaaegu kindlasti süüdi see, et dokumendil endal on erinev kodeering. Kui töötate sisse Notepad++, siis all paremal on aktiivse dokumendi kodeeringu nimi (näiteks ANSI). Kui lisate metasildi UTF-8 ja dokument ise on sisse kirjutatud ANSI, seejärel tehke teisendus UTF-8(menüü kaudu " Kodeeringud"ja punkt" Teisendage UTF-8-ks ilma BOM-ita").

Kolmas põhjus

Neljas põhjus

Ja lõpuks, viimane populaarne põhjus on probleem andmebaasi kodeerimisega. Esiteks veenduge, et kõik teie tabelid ja väljad oleksid kirjutatud samas kodeeringus, mis ühtib ülejäänud saidi kodeeringuga. Kui see ei aita, käivitage kohe pärast skriptis ühenduse loomist järgmine taotlus:

MÄÄRATA NIMED "utf8"

Selle asemel " utf8"Kodeering võib olla erinev. Pärast seda peaksid kõik andmebaasi andmed õiges kodeeringus välja tulema.

Loodan, et selles artiklis selgitasin vähemalt 90% probleemidest, mis on seotud saidil "jutu" ilmumisega. Nüüd peate kiiresti tegelema sellise populaarse ja lihtsa probleemiga nagu vale kodeerimine.

Üsna sageli seisavad algajad blogijad ja mitte ainult algajad silmitsi HTML-lehtede kodeerimise probleemiga. Kui teksti ja loetavate märkide asemel kuvatakse arusaamatuid MRADE. Nii nimetatakse märke, mis ei vasta neile, mida lehel kuvada. Kust tulevad arusaamatud hieroglüüfid?

Selle mõistmiseks peate mõistma, mis on html-lehe kodeering. Igasugune arvutis olev tekst on esitatud baitide komplektina. Igas neist baitidest on konkreetse koodiga kodeeritud ainult üks märk. Selleks, et baitide komplekti õigesti dešifreerida või dekodeerida ja esitada see inimesele loetaval kujul, peab brauser ühtima ühe kooditabelitega.

Põhiline kodeering on ASCII-kodeering, mis sisaldab 128 ladina tähestiku ja erimärkide (sulgud, võred jne) koode. Siis ilmusid esimesed venekeelsed märgikodeeringud CP866 ja KOI8-R ning neist tuli tänapäeva veebimeistritele tuntud windows-1251 kodeering. Kuigi kõik need kodeeringud on loodud venekeelse teksti kuvamiseks, erinevad need kõik üksteisest koodi poolest.

Kui tekst on kirjutatud CP866 kodeeringus ja brauser proovib seda Windows-1251 kooditabeli abil dekodeerida, saame selle tulemusel loetamatud sõnad. Lisaks siin toodud kodeeringute nimedele on seal ka palju tsitaate. Sellise kooditabelite rohkuse korral on tekkinud kodeerimise ühilduvuse probleem. Universaalse kodeeringu loomise küsimus on muutunud väga kiireloomuliseks. Tänaseks on leiutatud universaalne kodeering utf-8. Veebilehe programmeerimisel on neli punkti, mis nõuavad vastavust ühele tekstikodeerimisstandardile.

  • Skriptide kodeeringud.
  • MySQL tabeli kodeering.
  • HTML-lehe enda kodeering.
  • Lokaat, mida kasutaja brauser kasutab.

Kõigis nendes saidi komponentides tuleks kasutada ühte kodeeringut - eelistatavalt utf-8, kuna see on universaalne. Kui vajutate klahvikombinatsiooni CTRL+ U, saate vaadata lehekoodi, mis näitab, millist kodeeringut selles dokumendis kasutatakse.

Kui avate oma ajaveebi ja näete vene tähemärkide asemel kummalisi märke, tähendab see, et kodeering on valesti seadistatud.

Kuidas kodeeringut muuta?

Teie ajaveebi kodeerimisega seotud vigade ja probleemide kõrvaldamiseks kasutame FTP-klienti. Kopeerige selle abiga fail wp-config.php oma arvuti töölauale ja avage see Notepad++ tekstiredaktoriga. See fail sisaldab teavet teie ajaveebi kohta, sealhulgas paroole, andmebaasi kodeeringut ja muud. Vaatame, kas kodeering on mõni muu, see tuleb muuta UTF-8-ks.

  • -salvestage selles kodeeringus.
  • - muutke andmebaasi koodis kodeeringuks UTF-8.

Salvestame faili Notepad++ redaktorisse väärtusega “UTF-8 ilma BOM-i allkirjata” ja laadime faili üles oma hostimisse, st muudame hostimisel vana wp-config.php faili , uue peal.

Reeglina piisab nendest toimingutest, et kõik teie ajaveebis õigesti kuvada. Kui pärast neid samme miski ei aidanud, võite proovida kodeeringu muutmiseks teist viisi. Selleks peate tegema .htaccess-failis muudatusi. Selle parandamiseks avage Notepad++ redaktori abil fail .htaccess ja lisage algusesse üks järgmistest ridadest:

  • AddDefaultCharset UTF-8
  • CharsetDisable Sees
  • CharsetDefault UTF-8
  • CharsetSourceEnc UTF-8

Vahel piisab ühe valiku muutmisest; Kui see ei tööta, vaatame käsitsi läbi järgmised valikud, sisestades järgmised valikud ükshaaval. Ärge unustage toimingute jada:

  1. Avage fail redaktoris.
  2. Teeme muudatusi.
  3. Hoiame kokku.
  4. Laadige hostimisse.
  5. Kontrollime.

Samuti tahan mainida üht probleemi, mis võib tekkida ja millega puutusin kokku jäädvustuslehtede loomisel. Püüdmislehe failide hostimisse üleslaadimisel võib tekkida ka kodeeringu mittevastavus. Sel juhul peate parandama faili index.html. Selleks ekstraktige FaleZilla abil fail ja teisaldage see arvuti töölauale. Järgmisena avage fail tavalise Notepadi abil.

Pärast faili avamist Notepadis tehke vasakklõps "Fail" ja "Salvesta kui...".

15.03.2016

Mitte veel


Tere kõigile!
Jätkame HTML-i põhitõdede õppimist. Selles õppetükis vaatleme kuidas määrata HTML-kodeeringut saidi (veebilehe) jaoks.
See õppetund on väga oluline, sest kui te ei tea, kuidas veebilehe kodeeringut määrata, võib teie leht olla loetamatu. Küsite: "Kuidas nad ei saa?"
Lubage mul näidata teile, kuidas mu blogi vale kodeeringuga välja näeb:

Niisiis, HTML kodeering– need on koodide ja tähestiku sümbolite vastavustabelid. See tähendab, et meie kodeerimisarvuti muudab koodi selgeteks, loetavateks tähtedeks.

Et brauserile teada anda, millises kodeeringus on veebilehel olevad märgid, tuleb kirjutada siltide vahele Siin on metasilt:

Pange tähele, et kood sisaldab sõna "kodeeringu nimi". Siin peate määrama HTML-kodeeringu.
Tavaliselt on see utf-8 või windows-1251.

Kodeerimine jaoksutf-8:

KodeerimineSest Windows-1251:

Kui unustate brauserile öelda, millises kodeeringus sait või veebileht on, proovib brauser kodeeringut automaatselt määrata, kuid see ei õnnestu alati õigesti. Lõppkokkuvõttes on tulemus sama, mida ma ülaloleval pildil näitasin.

Liigume edasi praktika juurde.

Kuidas luua HTML-dokumenti
utf-8 kodeering

"Kõik programmid" => "Tarvikud" => "Märkmik" :

<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p> <head></head> See on metasilt:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p> <html> <head> <title>Minu esimene HTML-leht StepkinBlogis.<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>Klõpsake märkmikus <span>"Fail" => "Salvesta kui..."</span>:</p> <p><img src='https://i0.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-3.png' width="100%" loading=lazy loading=lazy></p><p><br>Kui üksus "Kodeering:" on määratud "UTF-8". <br>Klõpsake "Salvesta":</p> <p><img src='https://i0.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-4.png' width="100%" loading=lazy loading=lazy></p><p>Kas suurendada pilti?</p> <h3><span>Kuidas luua HTML-dokumenti Windows-1251 kodeeringuga</span></h3> <p>Avage tavaline märkmik. <span><i>"Kõik programmid" => "Tarvikud" => "Märkmik"</i> </span>.<br>Järgmisena kleepige tavaline HTML-kood Notepadi:</p><p> <html> <head> <title>Minu esimene HTML-leht StepkinBlogis.<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>Nüüd näitame, millises kodeeringus veebileht salvestatakse. Selleks asetage siltide vahele <head></head> See on metasilt:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </p><p>See peaks välja nägema selline (rida nr 4):</p><p> <html> <head> <title>Minu esimene HTML-leht StepkinBlogis.<script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>Klõpsake märkmikus <span>"Fail" => "Salvesta kui..."</span>:</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-5.png' width="100%" loading=lazy loading=lazy></p> <p>Kui üksus "Faili nimi" on, kirjutage veebilehe nimi ladina keeles ja laiendiga ".html". Ma arvan, et mäletate seda oma esimestest tundidest. <br>Kui üksus "Kodeering:" on määratud, märkige "ANSI". <br>Klõpsake "Salvesta":</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-6.png' width="100%" loading=lazy loading=lazy></p> <p>See on kõik!</p> <p>Enamik veebihaldureid valib UTF-8 kodeeringu. Ma ei ütle teile põhjuseid, sest ma kardan teid üle koormata teabega, mida teie HTML-i tundmise etapis veel vaja pole.</p> <p>Näiteks märkmikus määrake kood:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p>Ja salvestamisel määrake "ANSI":</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-6.png' width="100%" loading=lazy loading=lazy></p> <p>Kuna see on vale, on tulemus järgmine:</p> <p>Selliste tulemuste vältimiseks salvestage oma veebilehed õigesti</p> <p>Eelmine postitus <br></span> <span>Järgmine sissekanne <br></p> <p>Kui kodeering on vale, kuvatakse kogu sait või selle osa kui “kryapozyablov”, st. kummalised tähemärgid, mis muudavad teksti loetamatuks. Selline olukord võib tekkida siis, kui veebiserveri kodeering on valesti konfigureeritud või kui sätteid pole. Vaatleme võimalikke võimalusi ja võimalusi probleemide lahendamiseks</p> <h2>Vale HTML-lehe kodeering <br></h2> <p>Loome testfaili:</p><p>Sudo gedit /var/www/html/encoding.html</p><p>Kopeerime sellesse:</p><p> <html> <head> <title>Kodeerimise kontroll



Avame selle faili brauseris

Nagu näete, tuvastab brauser kodeeringu valesti:

Selle olukorra parandamiseks on mitu võimalust. Alustame kõige lihtsamast – määrake selgesõnaliselt veebilehe kodeering. Seda teeb metasilt, mis peab asuma sildi sees pea:

Lisame selle rea oma testfaili, et see näeks välja järgmine:

Kodeerimise kontroll

Testfaili kodeeringu kontrollimiseks



Nagu näeme järgmisel ekraanipildil, on probleem lahendatud:

Kui teie faili kodeering erineb UTF-8, seejärel asendage see Windows-1251 või selline, mis ühtib veebilehe kodeeringuga. Failide kodeeringu tuvastamise õppimiseks vaadake.

See oli lihtsaim viis kodeerimisprobleemi lahendamiseks – ilma serveri seadeid muutmata.

Taastame oma testfaili algsesse olekusse ja jätkame kodeeringu määramise võimaluste uurimist.

Kui failid .htaccess Apache seaded lubavad, saab neid faile kasutada veebiserveri saadetud lehtede kodeeringu määramiseks. Failide toe lubamiseks .htaccess Apache konfiguratsioonifailis ( /etc/apache2/apache2.conf) leidke ridade rühm

Valikud Indeksid FollowSymLinks AllowOverride Puudub Nõua, et kõik on lubatud

Ja asendage see

AllowOverride Puudub

AllowOverride All

Pärast seda tuleb server taaskäivitada.

Sudo systemctl taaskäivitage apache2.service

Fail .htaccess tuleb paigutada saidiga samasse kataloogi. Minu saiti majutatakse veebiserveri juurkataloogis. Kui teil on sama, siis nüüd kaustas /var/www/html/ luua fail .htaccess ja lisage sellele käskkiri AddDefaultCharset pärast mida märkige soovitud kodeering. Näited

AddDefaultCharset UTF-8

AddDefaultCharset windows-1251

Saate määrata kodeeringu, mida rakendatakse ainult teatud vormingus failidele:

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

Failide komplekt võib olla ükskõik milline, näiteks:

AddCharset utf-8 .html .css .php .txt .js

Järgmine valik on alternatiiv ja võimaldab teil määrata ka teatud tüüpi failide kodeeringu, mis nõuab selle lubamist mod_headers:

Päisekomplekt sisutüüp "text/html; charset=utf-8"

Teine võimalus, mida saab ka failis kasutada .htaccess UTF-8 kodeeringu määramiseks:

IndexOptions + Charset=UTF-8

Kui sait on PHP-s, peate võib-olla lisaks kodeeringu dubleerima php_value default_charset:

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

Htaccess-faili loomise asemel saate määrata kodeeringu veebiserveri konfiguratsioonifailis. Apache CentOS/Fedora puhul on see fail httpd.conf ja Debiani/Ubuntu puhul on see fail apache2.conf. Lisage järgmine rida, et määrata kodeering ja taaskäivitada veebiserver, et muudatused jõustuksid:

AddDefaultCharset UTF-8

Kuidas seadistada PHP-s UTF-8 kodeeringut

PHP-skriptis on kodeeringuks seatud päis, Näiteks:

Header("Sisutüüp: charset=utf-8");

Tavaliselt märgitakse koos kodeeringuga ka sisutüüp (näites HTML-lehe valik):

Header("Sisutüüp: text/html; charset=utf-8");

Teine võimalus RSS-kanali jaoks:

Header("Sisutüüp: text/xml; charset=utf-8");

Pidage meeles, et funktsioon päis tuleb välja kutsuda enne mis tahes väljundit brauserisse. Vastasel juhul (kui väljund on brauserisse juba tehtud), on päised juba saadetud. Ilmselgelt pole sel juhul neid enam võimalik muuta. Kui brauserisse väljastati veateade, siis on päised juba saadetud ja päise kasutamine põhjustab tõrke. Kontrollimaks, kas päised on juba saadetud, kasutage headers_sent.

Kirjeldatud meetod töötab ainult siis, kui PHP skript genereerib täielikult lehe sisu. Peaksite salvestama staatilised lehed (nt html) utf-8 kodeeringus. Enamik veebiservereid võtab faili kodeeringu teadmiseks ja lisab sellele vastavalt päise. Tegelikult annab PHP-faili utf-8 kodeeringus salvestamine sama tulemuse.

MySQL-i andmebaasi tulemuste vale kodeerimine

Kui teie sait koosneb staatilisest osast (malli) ja dünaamilisest osast, mis on moodustatud andmebaasist saadud andmetest, siis võib tekkida olukord, kus saidi osal on õige kodeering ja mõnel saidi osal on vale kodeering. üks. Sel juhul on veebiserveri seadete muutmine kasutu - kuna osa lehest on siiski vale kodeeringuga.

Alustuseks peate määrama oma tabelite kodeeringu. Saate vaadata phpMyAdmin:

Pöörake tähelepanu veerule " Võrdlus", kirje" utf8_unicode_ci" tähendab, et kasutatakse kodeeringut UTF-8.

Saate luua ühenduse MySQL DBMS-iga ja kontrollida tabelite kodeerimist ilma phpMyAdminita. Selle jaoks:

Mysql -u root -p

Kui unustasite andmebaasi nime, käivitage käsk:

NÄITA ANDMEBAASID;

Oletame, et tahan otsida andmebaasist information_schema tabelite kodeeringut

USE info_skeem;

Kui unustasite tabelite nimed, käivitage:

KUVA TÄISVEERUD TEST tabeli_nimi;

Näiteks:

KUVA TÄISVEERUD GLOBAL_STATUSEST;

Näete midagi sellist:

Vaata veergu Võrdlus. Minu puhul seal utf8_general_ci, see on nagu utf8_unicode_ci, kodeering UTF-8. Muide, kui te ei tea, mis erinevus kodeeringutel on utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci ja ka seda, millist kodeeringut MySQL-i andmebaasi jaoks valida, seejärel vaadake.

Nüüd, kui me teame kodeeringut (minu puhul on see UTF-8), peate iga kord, kui loote ühenduse MySQL DBMS-iga, täitma päringuid järjestikku:

SET NAMES UTF8 MÄÄRA MÄRGI SET UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET character_set_results = UTF8

PHP-s saab seda teha midagi sellist:

$this->mysqli = new mysqli($server, $kasutajanimi, $parool, $basenimi); if ($this->mysqli->connect_error) ( $this->errorHandler_c->logError(1, "Ühendamisviga (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error , $_SERVER ["REQUEST_URI"] ) $this->mysqli->query("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SET karakterikomplekti_klient = UTF8"); $this->mysqli->query("SET märgistiku_komplekti_ühendus = UTF8"); $this->mysqli->query("SET märgikomplekti_tulemused = UTF8");

pane see tähele UTF8 peate selle asendama teie tabelite jaoks kasutatava kodeeringuga.

Faili kodeeringu muutmine

Kui otsustate minna teisele poole ja uue kodeeringu installimise asemel muutke oma failide kodeeringut, seejärel vaadake artiklit "". See ütleb teile, kuidas teada saada failide praegune kodeering ja kuidas teisendada faile mis tahes kodeeringusse (mitte ainult UTF-8).

Kuidas teada saada, millist kodeeringut server saadab

Kui soovite teada saada, millised kodeeringusätted veebiserveril on (millise kodeeringu see päistesse saadab), kasutage järgmist käsku:

Curl URL -s -o /dev/null -D /dev/stdout | grep -E "märgistik"

Selle asemel URL sisestage kontrollitava saidi tegelik aadress. Kui sait kasutab HTTPS-i, siis määrake näiteks saidi aadress koos protokolliga

Curl https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "märgistik"

Millist kodeeringut veebisaidi jaoks valida