Ginugol ko ang huling ilang oras sa aking website sa pagsubok ng HTML 4.01 Strict at talagang nagtagumpay ako dito, ngunit may isa pang babala na tila hindi ko maalis. Babala:
Hindi tugma ang pag-encode ng character!
Ang pag-encode ng character na tinukoy sa header ng HTTP (iso-8859-1) ay iba sa value sa elemento (utf-8). Gagamitin ko ang value mula sa HTTP header (iso-8859-1) para sa kumpirmasyong ito.
Para sa pangkalahatang impormasyon kung paano baguhin ang header ng character set sa iba't ibang network stack, tingnan ang http://www.w3.org/International/O-HTTP-charset
2018-05-25 13:30
Malinaw na minarkahan ng server ang dokumento bilang ISO-8859-1 sa mga header ng HTTP. Subukang i-save ang default.html gamit ang UTF-8 encoding gamit ang naaangkop na editor.
2018-05-25 03:07
Okay, nakaisip ako ng isang bahagyang solusyon sa aking problema. Dahil default.html file lang ang nagdudulot ng babala, ipinapalagay ko na may ginagawang espesyal ang server dito dahil sa pangalan nito. Kaya gumawa ako ng bagong home.html file na may parehong nilalaman ng default.html file at itinuro ang .htaccess file sa bagong file (tingnan ang linya 3 sa ibaba).
# Gamitin ang PHP5 bilang default AddHandler application/x-httpd-php5 .php DirectoryIndex home.html AddDefaultCharset UTF-8
Naayos nito ang problema at ang lahat ng mga file ay kinikilala na ngayon bilang UTF-8. Hindi pa rin ako sigurado kung ano ang ginagawa ng server sa default.html file o kung saan ang mga setting ay patungkol dito, ngunit habang nawawala ang aking problema ay kakalimutan ko ito.
Kung ang pag-encode ay hindi tama, ang buong site o bahagi nito ay ipinapakita bilang "kryapozyablov", i.e. kakaibang mga character na ginagawang hindi nababasa ang teksto. Maaaring mangyari ang sitwasyong ito kung ang pag-encode ng web server ay hindi na-configure nang tama o kung walang mga setting. Isaalang-alang natin ang mga posibleng opsyon at paraan upang malutas ang mga problema
Maling pag-encode ng HTML page
Gumawa tayo ng test file:
Sudo gedit /var/www/html/encoding.html
Kopyahin natin ito:
Buksan natin ang file na ito sa browser
Tulad ng nakikita mo, ang pag-encode ay hindi natukoy ng browser:
Mayroong ilang mga paraan upang itama ang sitwasyong ito. Magsimula tayo sa pinakasimpleng bagay - tahasang tukuyin ang pag-encode para sa web page. Ginagawa ito ng isang meta tag, na dapat nasa loob ng tag ulo:
Idagdag natin ang linyang ito sa ating test file para magmukhang ganito:
Subukan ang file upang suriin ang pag-encode
Tulad ng nakikita natin sa sumusunod na screenshot, nalutas ang problema:
Kung ang pag-encode ng iyong file ay iba sa UTF-8, pagkatapos ay palitan ito ng windows-1251 o isa na tumutugma sa pag-encode ng web page. Upang matutunan kung paano tuklasin ang pag-encode ng file, tingnan.
Ito ang pinakamadaling paraan upang ayusin ang problema sa pag-encode - nang hindi binabago ang mga setting ng server.
Ibalik natin ang ating test file sa orihinal nitong estado at magpatuloy sa pag-aaral ng mga paraan upang tukuyin ang pag-encode.
Kung ang mga file .htaccess pinagana ng mga setting ng Apache, ang mga file na ito ay maaaring gamitin upang tukuyin ang pag-encode ng mga pahina na ipinadala ng web server. Upang paganahin ang suporta sa file .htaccess sa Apache configuration file ( /etc/apache2/apache2.conf) maghanap ng pangkat ng mga linya
At palitan ito
AllowOverride None
AllowOverride All
Pagkatapos nito, kailangang i-restart ang server.
Sudo systemctl i-restart ang apache2.service
file .htaccess dapat ilagay sa parehong direktoryo ng site. Ang aking site ay naka-host sa root directory ng web server. Kung mayroon kang pareho, pagkatapos ngayon sa folder /var/www/html/ lumikha ng isang file .htaccess at idagdag ang direktiba dito AddDefaultCharset pagkatapos ay ipahiwatig ang nais na pag-encode. Mga halimbawa
AddDefaultCharset UTF-8
AddDefaultCharset windows-1251
Maaari mong tukuyin ang isang pag-encode na ilalapat lamang sa mga file ng isang tiyak na format:
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml
Ang hanay ng mga file ay maaaring maging anuman, halimbawa:
AddCharset utf-8 .html .css .php .txt .js
Ang susunod na opsyon ay isang alternatibo at nagbibigay-daan din sa iyo na itakda ang pag-encode para sa mga file ng isang partikular na uri ay nangangailangan na ito ay paganahin mod_headers:
Isa pang opsyon na maaari ding gamitin sa file .htaccess para itakda ang UTF-8 encoding:
IndexOptions +Charset=UTF-8
Kung ang site ay nasa PHP, maaaring kailanganin mong i-duplicate ang pag-encode gamit ang php_value default_charset:
AddDefaultCharset windows-1251 php_value default_charset "cp1251"
Sa halip na gumawa ng .htaccess file, maaari mong itakda ang pag-encode sa configuration file ng web server. Para sa Apache CentOS/Fedora ito ang httpd.conf file, at sa Debian/Ubuntu ito ang apache2.conf file. Idagdag ang sumusunod na linya upang itakda ang pag-encode at i-restart ang web server para magkabisa ang mga pagbabago:
AddDefaultCharset UTF-8
Paano itakda ang UTF-8 encoding sa PHP
Sa script ng PHP, nakatakda ang pag-encode sa header, Halimbawa:
Header("Uri ng Nilalaman: charset=utf-8");
Karaniwan, kasama ang pag-encode, ang uri ng nilalaman ay ipinahiwatig din (sa halimbawa, ang opsyon para sa isang HTML na pahina):
Header("Content-Type: text/html; charset=utf-8");
Isa pang opsyon para sa RSS feed:
Header("Uri ng nilalaman: text/xml; charset=utf-8");
Tandaan na ang function header dapat tawagan bago ang anumang output sa browser. Kung hindi man (kung ang output sa browser ay nagawa na), kung gayon ang mga header ay naipadala na. Malinaw, sa kasong ito, hindi na posible na baguhin ang mga ito. Kung ang isang mensahe ng error ay na-output sa browser, kung gayon ang mga header ay naipadala na at ang paggamit ng header ay magdudulot ng error. Upang tingnan kung naipadala na ang mga header, gamitin headers_sent.
Gumagana lamang ang inilarawang paraan kapag ganap na nabuo ng script ng PHP ang nilalaman ng pahina. Dapat mong i-save ang mga static na pahina (tulad ng html) sa utf-8 encoding. Ang karamihan sa mga web server ay mapapansin ang pag-encode ng file at magdagdag ng naaangkop na header. Sa katunayan, ang pag-save ng PHP file sa utf-8 encoding ay hahantong sa parehong resulta.
Maling pag-encode ng mga resulta mula sa MySQL database
Kung ang iyong site ay binubuo ng isang static na bahagi (template) at isang dynamic na bahagi, na nabuo mula sa data na natanggap mula sa database, kung gayon ang isang sitwasyon ay maaaring lumitaw kapag ang bahagi ng site ay may tamang pag-encode, at ang isa pang bahagi ng site ay may mali isa. Sa kasong ito, walang silbi na baguhin ang mga setting ng web server - dahil pareho pa rin, magkakaroon ng maling pag-encode ang bahagi ng page.
Kailangan mong magsimula sa pamamagitan ng pagtukoy sa pag-encode ng iyong mga talahanayan. Maaari mong tingnan phpMyAdmin:
Bigyang-pansin ang column " Paghahambing", entry " utf8_unicode_ci" nangangahulugan na ang pag-encode ay ginagamit UTF-8.
Maaari kang kumonekta sa MySQL DBMS at suriin ang pag-encode ng mga talahanayan nang walang phpMyAdmin. Upang gawin ito:
Mysql -u ugat -p
Kung nakalimutan mo ang pangalan ng database, pagkatapos ay patakbuhin ang command:
MAGPAKITA NG MGA DATABASE;
Sabihin nating gusto kong hanapin ang pag-encode para sa mga talahanayan sa information_schema database
GAMITIN ang information_schema;
Kung nakalimutan mo ang mga pangalan ng mga talahanayan, patakbuhin ang:
IPAKITA ANG BUONG COLUMNS MULA sa table_name;
Halimbawa:
IPAKITA ANG BUONG MGA COLUMM MULA SA GLOBAL_STATUS;
May makikita kang ganito:
Tingnan ang column Collation. Sa kaso ko doon utf8_general_ci, parang utf8_unicode_ci, pag-encode UTF-8. Sa pamamagitan ng paraan, kung hindi mo alam kung ano ang pagkakaiba sa pagitan ng mga pag-encode utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, at kung ano ang pipiliin sa pag-encode para sa database ng MySQL, pagkatapos ay tingnan.
Ngayon na alam na natin ang pag-encode (sa aking kaso ito ay UTF-8), sa bawat oras na kumonekta ka sa MySQL DBMS kailangan mong magsagawa ng mga query nang sunud-sunod:
SET NAMES UTF8 SET CHARACTER SET UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET character_set_results = UTF8
Sa PHP ito ay maaaring gawin tulad nito:
$this->mysqli = bagong mysqli($server, $username, $password, $basename); kung ($this->mysqli->connect_error) ( $this->errorHandler_c->logError(1, "Connect Error (" . $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 character_set_client = UTF8"); $this->mysqli->query("SET character_set_connection = UTF8"); $this->mysqli->query("SET character_set_results = UTF8");
tandaan mo yan UTF8 kailangan mong palitan ito ng encoding na ginagamit para sa iyong mga talahanayan.
Pagbabago ng pag-encode ng file
Kung magpasya kang pumunta sa ibang paraan at sa halip na mag-install ng bagong pag-encode, baguhin ang pag-encode ng iyong mga file, pagkatapos ay tingnan ang artikulong "". Sinasabi nito sa iyo kung paano malalaman ang kasalukuyang pag-encode ng mga file at kung paano i-convert ang mga file sa anumang pag-encode (hindi lang UTF-8).
Paano malalaman kung anong pag-encode ang ipinapadala ng server
Kung gusto mong malaman kung anong mga setting ng pag-encode ang mayroon ang web server (kung ano ang ipinapadala nito sa mga header), pagkatapos ay gamitin ang sumusunod na command:
Curl URL -s -o /dev/null -D /dev/stdout | grep -E "charset"
Sa halip URL ipasok ang totoong address ng site na iyong sinusuri. Kung ang site ay gumagamit ng HTTPS, pagkatapos ay tukuyin ang address ng site kasama ang protocol, halimbawa
Curl https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "charset"
Aling pag-encode ang pipiliin para sa isang website
Upang maipakita nang tama ang mga pahina ng iyong site sa lahat ng browser at sa lahat ng uri ng device, kailangan mong alagaan ang pagtatakda ng tamang pag-encode. Ang pagkabigong sumunod sa ilang mga kundisyon, na tatalakayin natin nang detalyado ngayon, ay maaaring humantong sa katotohanan na ang teksto ay nagiging isang walang kahulugan na hanay ng mga character na imposibleng basahin (krakozyabry).
Bakit ang mga crappy text ay ipinapakita sa halip na normal na text?
Ang bawat pahina sa iyong site ay dapat may partikular na encoding. Kinakailangang ipaalam sa browser kung anong pag-encode ang kasalukuyang ginagamit sa pamamagitan ng pagpasa ng mga espesyal na header. Sa mga header na ito dapat mong tukuyin ang pag-encode na tumutugma sa ginagamit mo sa katawan ng mga dokumentong nai-post sa site (sa mga pahina nito).
Matutukoy ng mga modernong browser ang mismong pag-encode ng dokumento kung nakalimutan ito ng webmaster na tahasan itong tukuyin. Minsan nangyayari na ang mga hindi pagkakapare-pareho ay lumitaw sa pagitan ng "opinyon" at katotohanan ng browser, kaya isang hanay ng mga character na hindi mababasa. Ang isang hanay ng mga bagay na walang kapararakan ay maaaring magkaroon ng iba't ibang anyo, kung minsan ito ay magiging mga kakaibang simbolo lamang, katulad ng mga sinaunang hieroglyph, at kung minsan ay mga tanong o tanong lamang sa loob ng mga itim na diamante. Sa pangkalahatan, hindi gaanong mahalaga kung anong uri ng kalokohan ang ipinapakita ng browser, ngunit ang mahalaga ay hindi ito mabasa ng isang tao.
Kung nahaharap ka sa problema ng isang hindi wastong tinukoy na pag-encode at makita sa iyong website ang isang bagay na hindi mo mabasa, una sa lahat, gumamit ng isang espesyal na Decoder na binuo sa studio ni Artemy Lebedev. Upang gawin ito, kopyahin lamang ang teksto na nais mong i-decrypt, i-paste ito sa espesyal na field at i-click ang "I-decrypt". Kung matagumpay ang pag-decode, makikita mo ang nababasa nang teksto, gayundin ang orihinal na pag-encode at ang landas na kailangang pagdaanan ng program upang ilabas ang resulta.
Ang lahat ng ito ay kinakailangan, sa halip, para sa mga advanced na gumagamit, kung kanino ang impormasyong natanggap ay maaaring makatulong sa ilang paraan. Marahil ang resulta ng mga aksyon ng programa ay magbibigay sa iyo ng ideya at malalaman mo kung saan nagmumula ang kalokohan sa iyong site at mabilis na itama ang sitwasyon. At kung ang mga manipulasyon na ginawa ay hindi nagsasabi sa iyo ng anuman, pagkatapos ay magpatuloy lang tayo.
Paano pumili ng tamang pag-encode
Sa artikulong ito, hindi natin susuriin kung anong mga uri ng pag-encode ang mayroon at kung paano sila naiiba sa isa't isa, dahil... Hindi namin nais na mag-overload ang alinman sa aming sarili o sa iyo ng hindi kinakailangang impormasyon, at para sa mga layunin ng artikulo ngayon ay hindi ito ang kaso. Nararapat lamang na tandaan ang katotohanan na sa isang site sa wikang Ruso ay ganap na walang punto sa pag-install ng windows-1251 encoding, na kumpleto na inilarawan sa kahanga-hangang artikulo ng Wikipedia. Kahit na ang lahat ng mga teksto dito ay isusulat ng eksklusibo sa Russian at walang mga pagsasama ng hindi karaniwang mga character. Sa halip, kailangan mo lamang na piliin ang unibersal na pag-encode na UTF-8, kunin ito bilang isang ibinigay, nang hindi iniistorbo ang iyong ulo sa hindi kinakailangang impormasyon.
Ang katotohanan ay walang punto sa pagpili ng isang pag-encode para sa iyong site na sumusuporta lamang sa mga character mula sa mga wikang Slavic, tulad ng Russian, Ukrainian, Belarusian, Serbian, Macedonian at Bulgarian. Bakit limitahan ang iyong sarili mula sa simula at ipahamak ang iyong sarili sa mga posibleng problema sa hinaharap. Ano ang gagawin mo kung kailangan mong magpasok ng character na hindi sinusuportahan?
Ang UTF-8 (mula sa English Unicode Transformation Format) ay isang walong-bit na Unicode transformation na format na nakatanggap ng pandaigdigang pagkilala at na-standardize nang eksakto upang maiwasan ang mga problemang nauugnay sa paglitaw ng walang kwenta at pagkalito sa mga hindi nababasang teksto. Mula sa kung saan maaari naming ligtas na tapusin na sa kasong ito, kailangan mong piliin ang mas malaki sa dalawang kasamaan at matulog nang mapayapa, nang hindi sinisiyasat ang mga detalye, dahil ang lahat ay malinaw dito. Tingnan ang laki ng Jupiter at Venus para sa paghahambing.
Mga pangunahing paraan upang itakda ang tamang pag-encode
Kadalasan, ang mga problema sa pag-encode ng site ay lumitaw hindi dahil wala sa mga kundisyon na sasabihin namin sa iyo ang natugunan, ngunit sapat na upang mabigo na matupad ang isa lamang sa mga ito upang ang teksto sa iyong site ay magsimulang magpakita nang hindi tama. Pagkatapos mong itakda ang pag-encode gamit ang lahat ng pamamaraan sa itaas, malulutas ang problema na may 99.9% na posibilidad. Nakarating kami sa konklusyong ito batay sa maraming taon ng karanasan sa pagtatrabaho sa mga website sa iba't ibang mga platform ng pagho-host, gamit ang iba't ibang mga sistema ng pangangasiwa at mga setting ng server.
Pag-encode sa .htaccess - AddDefaultCharset
Una sa lahat, kailangan mong itakda ang default na pag-encode ng lahat ng mga pahina sa site gamit ang isang napaka-kapaki-pakinabang na htaccess na direktiba - AddDefaultCharset, na literal na nangangahulugang "Magdagdag ng DefaultCharset". Ginagawa ito nang napakasimple:
AddDefaultCharset UTF-8
Kung hindi mo alam kung ano ito , pagkatapos ay lumikha lamang ng isang text file sa Notepad, at pagkatapos ay gamit ang Total Commander, palitan ang pangalan nito sa isang walang pamagat na file na may HTACCESS extension ( - ito mismo ang magiging hitsura ng buong pangalan ng iyong file). Pagkatapos nito, i-upload ang bagong likhang file sa root directory ng iyong site (sa parehong lugar kung saan matatagpuan ang pangunahing executable file, halimbawa index.php). At huwag kalimutang ipasok ang linya na may default na pag-encode na ibinigay namin.
Pag-encode gamit ang meta charset
Ang mga meta tag ay may kakayahang magpadala ng impormasyon tungkol sa pahina sa browser sa anyo ng mga espesyal na header, kung saan ang isa ay eksakto kung ano ang kailangan namin - charset. Sa pangkalahatan, ang mga meta tag ay maaaring magkaroon ng hanggang 4 na magkakaibang katangian:
- nilalaman;
- http-equiv;
- pangalan;
- scheme.
Sa katunayan, sa apat na ipinakitang katangian, isa lamang ang kinakailangan - nilalaman, ngunit may mga pagbubukod. Halimbawa, sa aming kaso, gagamit kami ng pinaikling bersyon ng entry at itatakda namin ang pag-encode gamit ang meta tag nang eksakto tulad nito:
Ang lumang format ng pag-record ay matagal nang nalubog sa limot at wala nang saysay na gamitin pa ito:
Tulad ng alam mo, ang mga meta tag ay karaniwang inilalagay sa loob ng lalagyan ulo. Ang lahat, nang walang pagbubukod, marahil ay alam na ang tungkol dito. Gawin ang operasyong ito at magpapatuloy kami sa susunod na item sa aming listahan.
Pag-encode ng file gamit ang header PHP function
Ang paraang ito ay angkop lamang para sa mga may website na ipinatupad gamit ang pinakasikat na programming language sa kasalukuyan, karamihan ay nakatuon sa paglikha ng mga website - PHP (Hyper Text Preprocessor). Upang lutasin ang problemang iniharap sa artikulong ito, gagamitin namin ang kahanga-hangang built-in na header() function, na idinisenyo upang ipasa ang mga header, katulad ng mga meta tag, ngunit may kaunting pagkakaiba na ang aksyon ay ginanap mula sa isang script ng PHP, at hindi sa pamamagitan ng Output ng HTML code.
Itakda ang UTF-8 encoding para sa isang file gamit ang function header() medyo simple - kailangan mo lamang i-paste ang ibinigay na code sa pinakadulo simula ng pahina, ngunit siyempre sa loob ng saklaw ng PHP, na ipinapahiwatig ng ganito: здесь у нас PHP-код?>o kaya-.
Header("Content-type: text/html; charset=utf-8");
Ang pinakamahalagang punto dito ay mayroon kaming karapatan na magpadala ng mga header lamang kung walang output mula sa script dati. Iyon ang dahilan kung bakit inilalagay namin ang code na ito sa pinakadulo simula ng pahina. Kailangan mong gawin ito nang matalino at magkaroon ng isang mahusay na pag-unawa sa kung ano ang nangyayari, dahil maaari mong siguraduhin na ikaw ay naglalagay ng isang header sa simula ng file, ngunit maaaring hindi mo alam na ang file na ito ay ginagamit sa isa pang file kung saan ito ay hinila gamit ang function nangangailangan o isama pagkatapos na maipakita ang ilang partikular na impormasyon sa screen. Samakatuwid, kung hindi mo masyadong naiintindihan kung ano ang pinag-uusapan natin ngayon, mas mainam na magpatuloy sa susunod na hakbang at bumalik dito kung ang nakaraang 3 ay hindi nakatulong sa pagtakda ng tamang pag-encode ng mga pahina ng iyong site.
Pag-save ng mga file sa tamang pag-encode
Ang isa sa marahil ang pinakakaraniwang dahilan para sa paglitaw ng mga basag sa isang website ay ang hindi tamang pag-encode ng mga file mismo na ginamit upang bumuo ng panghuling dokumento. Kadalasan, ang problemang ito ay lumitaw sa mga baguhan na programmer na nagsasagawa lamang ng kanilang mga unang hakbang sa pag-master ng sining. Kapag ang isa sa mga kasalukuyang sikat na sistema ng pangangasiwa ay napili bilang engine ng site, ang problemang ito ay maaaring lumitaw sa napakabihirang mga kaso, ngunit kung ito ay ginagamit, pagkatapos ito ay nangyayari sa halos bawat ikatlong kaso.
Gaya ng napagkasunduan namin kanina, ang pag-encode na ginagamit namin sa lahat, kahit na ang pinaka-sopistikadong mga site sa wikang Ruso, ay UTF-8, kaya i-encode namin ang lahat ng file na bumubuo sa engine ng site sa parehong format. At upang mabago ang pag-encode ng file mismo, na na-upload sa server, ang karaniwang notepad na ibinigay ng Windows operating system ay, siyempre, ay hindi sapat. Samakatuwid, mas mahusay na gumamit ng isang third-party na programa na ibinahagi nang walang bayad - Notepad++, na maaaring ma-download mula sa opisyal na website nang walang anumang mga problema.
Ang pagkakaroon ng matagumpay na nakumpleto ang simpleng proseso ng pag-install, kakailanganin mong italaga ang program na ito bilang default na editor, gumawa ng ilang mga setting sa iyong panlasa at baguhin ang pag-encode ng hindi tama na ipinakitang file sa parehong paraan tulad ng ipinapakita sa screenshot. Yung. kailangan mong piliin ang "I-encode sa UTF-8 (walang BOM)". Ang isang magandang senyales na ito ang nangyari ay na sa una ay wala sa mga opsyon ang pipiliin at ipo-prompt ka na "I-convert sa UTF-8 (walang BOM)." Kung nakikita mo ito, siguraduhing may ilang segundo na lang bago malutas ang problema sa pag-encode.
Bilang karagdagan, gusto ko lang sabihin na kailangan mong pumili nang eksakto walang BOM. Kung hindi, kung mag-encode ka lang sa UTF-8 (na may BOM), magkakaroon ng mga dagdag na byte sa simula ng file. Sinusubukan nilang huwag gumamit ng BOM - Byte Order Mark sa web kapag nag-encode sa UTF-8 na format, dahil ito ay humahantong sa mga pagkakamali sa pamamagitan ng pag-abala sa tamang interpretasyon ng PHP.
Well, ngayong nakumpleto na ang lahat ng kinakailangang hakbang, malamang na makikita mo ang madaling basahin na teksto sa mga pahina ng iyong website at makahinga ka ng maluwag :)
Isa sa mga pinakakaraniwang problema na kinakaharap ng isang baguhan Webmaster(at hindi lang mga baguhan), ito mga problema sa coding sa site. Kahit na para sa akin ay patuloy itong lumilitaw kapag lumilikha ng mga website " abracadabra"Ngunit, sa kabutihang palad, alam kong lubos kung paano lutasin ang problemang ito, kaya inayos ko ang lahat sa loob ng ilang segundo. At sa artikulong ito susubukan kong turuan ka nang kasing bilis. lutasin ang mga problemang nauugnay sa coding sa site.
Ang unang bagay na dapat tandaan ay ang lahat ng mga problema sa hitsura ng "abracadabra" ay nauugnay sa isang mismatch sa pagitan ng pag-encode ng dokumento at ng pag-encode na itinakda ng browser. Sabihin nating isang dokumento sa windows-1251, ngunit sa ilang kadahilanan ay ipinapakita ang browser UTF-8. At ang pinagmulan ng naturang pagkakaiba ay maaaring ang mga sumusunod na dahilan.
Unang dahilan
Ang meta tag ay naisulat nang hindi tama uri ng nilalaman. Mag-ingat, dapat itong palaging naglalaman ng pag-encode kung saan nakasulat ang iyong dokumento.
Pangalawang dahilan
Mukhang isinulat ang meta tag sa paraang gusto mo, at ipinapakita ng browser kung ano mismo ang gusto mo, ngunit sa ilang kadahilanan ay may mga problema pa rin sa pag-encode. Ang salarin dito ay halos tiyak na ang mismong dokumento ay may iba't ibang encoding. Kung nagtatrabaho ka Notepad++, pagkatapos ay sa kanang ibaba ay mayroong pangalan ng pag-encode ng kasalukuyang dokumento (halimbawa, ANSI). Kung naglagay ka ng meta tag UTF-8, at ang mismong dokumento ay nakasulat sa ANSI, pagkatapos ay gawin ang conversion sa UTF-8(sa pamamagitan ng menu " Mga encoding"at ituro" I-convert sa UTF-8 nang walang BOM").
Pangatlong dahilan
Pang-apat na dahilan
At sa wakas, ang huling popular na dahilan ay problema sa pag-encode sa database. Una, siguraduhin na ang lahat ng iyong mga talahanayan at field ay nakasulat sa parehong pag-encode, na tumutugma sa pag-encode ng iba pang bahagi ng site. Kung hindi ito makakatulong, pagkatapos kaagad pagkatapos kumonekta sa script, patakbuhin ang sumusunod na kahilingan:
SET NAMES "utf8"
sa halip na " utf8" maaring may ibang encoding. Pagkatapos nito, lahat ng data mula sa database ay dapat lumabas sa tamang encoding.
Sa artikulong ito, umaasa akong naipaliwanag ko, sa pinakamababa, 90% ng mga problema na nauugnay sa hitsura ng "gibberish" sa site. Ngayon ay kailangan mong harapin ang isang sikat at simpleng problema tulad ng hindi tamang pag-encode sa lalong madaling panahon.
15.03.2016
Hindi pa
Hi sa lahat!
Ipagpatuloy natin ang pag-aaral ng mga pangunahing kaalaman sa HTML. Sa araling ito ay titingnan natin paano tukuyin ang HTML encoding para sa isang site (web page).
Napakahalaga ng araling ito dahil ang hindi pag-alam kung paano tukuyin ang pag-encode para sa isang web page ay maaaring magresulta sa hindi nababasa ng iyong pahina. Itatanong mo: "Paanong hindi nila magagawa?"
Hayaan akong ipakita sa iyo kung ano ang hitsura ng aking blog na may maling pag-encode:
Kaya, HTML encoding– ito ay mga talahanayan ng pagsusulatan sa pagitan ng mga code at mga simbolo ng alpabeto. Ibig sabihin, babaguhin ng aming encoding computer ang code sa malinaw, nababasang mga titik.
Upang sabihin sa browser kung nasaan ang pag-encode ng mga character sa web page, kailangan mong magsulat sa pagitan ng mga tag
Narito ang isang meta tag:
Pakitandaan na ang code ay naglalaman ng salitang “encoding name”. Dito kailangan mong tukuyin ang HTML encoding.
Ito ay karaniwang utf-8 o windows-1251.
Pag-encode para sautf-8:
EncodingPara sa windows-1251:
Kung nakalimutan mong sabihin sa browser kung nasaan ang pag-encode ng isang site o web page, susubukan ng browser na awtomatikong tukuyin ang pag-encode, ngunit hindi ito palaging nagtatagumpay nang tama. Sa huli, ang resulta ay magiging katulad ng ipinakita ko sa larawan sa itaas.
Magpatuloy tayo sa pagsasanay.
Paano gumawa ng HTML na dokumento gamit ang
utf-8 encoding
"Lahat ng Programa" => "Mga Accessory" => "Notepad" :
Ito ang meta tag:
Mag-click sa notepad “File” => “I-save bilang...”:
Kung saan ang item na "Pag-encode:" ay tinukoy na "UTF-8".
I-click ang "I-save":
Palakihin ang larawan?
Paano lumikha ng isang HTML na dokumento na may windows-1251 encoding
Magbukas ng karaniwang notepad. "Lahat ng Programa" => "Mga Accessory" => "Notepad"
.
Susunod, i-paste ang karaniwang HTML code sa Notepad:
Ngayon ipinapahiwatig namin kung anong pag-encode ang nai-save ang web page. Upang gawin ito, ilagay sa pagitan ng mga tag
Ito ang meta tag:
Ganito dapat ang hitsura nito (linya #4):
Mag-click sa notepad “File” => “I-save bilang...”:
Kung nasaan ang item na “File name,” isulat ang pangalan ng web page sa Latin at may extension na “.html”. Sa palagay ko naaalala mo ito mula sa iyong mga unang aralin.
Kung saan ang item na "Pag-encode:" ay tinukoy, ipahiwatig ang "ANSI".
I-click ang "I-save":
yun lang!
Pinipili ng karamihan sa mga webmaster ang pag-encode ng UTF-8. Hindi ko sasabihin sa iyo ang mga dahilan, dahil natatakot akong ma-overload ka ng impormasyon na hindi pa kailangan sa iyong yugto ng kaalaman sa HTML.
Halimbawa, sa notepad, itakda ang code:
At tukuyin ang "ANSI" kapag nagse-save:
Dahil ito ay hindi tama, ang resulta ay magiging ganito:
I-save nang tama ang iyong mga web page upang maiwasan ang mga resultang tulad nito
Nakaraang post
Susunod na entry