Problémy s UTF-8 BOM, na ktoré si treba dávať pozor vo WordPresse Veľmi skoro som narazil na problém, a to že po nainštalovaní určitého pluginu sa po kliknutí na aktiváciu objavila biela obrazovka. Nikdy som neprišiel na to, čo je príčinou, a predchádzajúce riešenie bolo, že ak neobsahuje čínske znaky, súbor sa priamo prenesie do ASCII kódu, čo sa vo všeobecnosti dá vyriešiť. Keď som dnes kúpil blog pre brata, táto situácia sa stala znova. Po dlhom pátraní som konečne našiel odpoveď.
V špecifikácii Unicode je koncept BOM. BOM - Byte Order Mark, čo je značka rádu bajtov. Poznámku o BOM nájdete tu:
V kóde UCS je znak nazývaný "ZERO WIDTH NO-BREAK SPACE", ktorý je kódovaný ako FEFF. FFFE je v UCS neexistujúca postava, takže by sa nemala objavovať v skutočnom prenose. Špecifikácia UCS odporúča preniesť znak "ZERO WIDTH NO-BREAK SPACE" pred odoslaním bajtového toku. Týmto spôsobom, ak prijímač prijíma FEFF, znamená to, že bajtový tok je Big-Endian; Ak je prijaté FFFE, znamená to, že bajtový tok je Little-Endian. Preto sa znak "ZERO WIDTH NO-BREAK SPACE" nazýva aj BOM.
UTF-8 nevyžaduje BOM na označenie poradia bajtov, ale môže použiť BOM na označenie spôsobu kódovania. UTF-8 kódovanie znaku "ZERO WIDTH NO-BREAK SPACE" je EF BB BF. Takže ak prijímač prijme bajtový tok začínajúci EF BB BF, vie, že ide o kódovanie UTF-8.
Windows používa BOM na označenie, ako sú textové súbory kódované.
Okrem toho FAQ-BOM na stránke unicode podrobne vysvetľuje BOM. Oficiálna prirodzená autorita, ale v angličtine, sa zdá byť náročnejšia.
V súbore kódovanom v UTF-8 zaberá BOM tri bajty. Ak použiješ Notepad na uloženie textového súboru ako UTF-8 kódovanie, otvor súbor pomocou UE a prepni na hexadecimálny editačný stav, aby si videl FFFE na začiatku. Toto je dobrý spôsob, ako identifikovať súbory kódované UTF-8, softvér používa BOM na identifikáciu, či je súbor kódovaný UTF-8, a mnohé softvéry tiež vyžadujú, aby importovaný súbor mal BOM. Napriek tomu stále existuje veľa softvéru, ktorý nerozpoznáva BOM. Keď som skúmal Firefox, vedel som, že v skorých verziách Firefoxu rozšírenia nemohli mať BOM, ale Firefox 1.5 a novšie verzie začali BOM podporovať. Teraz som zistil, že ani PHP nepodporuje BOM.
PHP bolo navrhnuté bez zohľadnenia BOM, čo znamená, že neignoruje tri znaky BOM na začiatku súboru kódovaného v UTF-8. Keďže to musí byť v Ako som videl vo wiki Bo-Blogu, Bo-Blog, ktorý tiež používa PHP, má tiež problémy s BOM. Spomenutý je ďalší problém: "Kvôli obmedzeniu mechanizmu odosielania COOKIE v súboroch, ktoré už majú na začiatku súboru BOM, nie je možné posielať COOKIE (pretože PHP už odoslal hlavičku súboru pred odoslaním COOKIE), takže funkcie prihlásenia a odhlásenia sú neplatné. Všetky funkcie, ktoré sa spoliehajú na COOKIES a SESSION, sú neplatné. To by mal byť dôvod prázdnej stránky na pozadí WordPressu, pretože akýkoľvek spustený súbor obsahuje BOM a všetky tri znaky budú odoslané, čo spôsobí zlyhanie funkčnosti závislej od cookies a relácií.
Riešením je uložiť súbor ako ASCII kód, ak obsahuje iba anglické znaky (alebo znaky v ASCII kódovaní). Ak používate editor ako UE, kliknite na File->Convert->UTF-8 na ASCII, alebo vyberte ASCII kódovanie v Save As. Ak je to riadok končiaci v DOS formáte, môžete ho otvoriť v Notepade, kliknúť na Uložiť ako a vybrať ASCII kódovanie. Ak obsahuje čínske znaky, môžete použiť UE's save ako funkciu a vybrať "UTF-8 no BOM". Pozrite si, prosím, obrázok nižšie:
Podľa inštrukcií z Bo-Blog wiki: Editplus musí byť uložený ako gb a potom ako UTF-8. Buďte však opatrní, pretože všetky znaky, ktoré nie sú zahrnuté v kódovaní GBK, budú stratené. Ak sa v súbore nachádzajú nejaké nečínske znaky, túto metódu nepoužívajte. (Z tohto malého pohľadu je UE - UltraEdite-32 naozaj oveľa lepší ako Editplus, Editplus je príliš ľahký)
Ďalším spôsobom, ktorý som našiel, je použiť editor súborov od Wordpressu. Táto metóda nie je obmedzená a nie je potrebné sťahovať špeciálny editor, veď všetci používajú WordPress. Najprv zapnite povolenie na zápis súboru, ktorý chcete upravovať vo FTP, potom zadajte pozadie WordPressu – > správcov-> editor súborov, zadajte cestu na úpravu súboru a kliknite na Upraviť súbor. Prvé tri znaky v editačnej obrazovke neuvidíte, ale to je v poriadku, nastavte kurzor pred prvý znak celého súboru a stlačte kláves Backspace. OK, klikni na Aktualizovať súbor, obnov ho vo FTP, uvidíš, že súbor je o 3 bajty menší a hotovo.
Nakoniec, toto je veľký problém, všetci, ktorí chcú písať vlastné pluginy, upravovať pluginy iných pre vlastné potreby a potrebujú upravovať šablónu (čo sa odhaduje, že bude potrebné pre každého), je najlepšie pochopiť vyššie uvedené poznatky, aby neboli zahltení, keď nastane problém.
|