Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 6768|Odgovoriti: 0

Problem kodiranja UTF-8 BOM je podrobno opisan

[Kopiraj povezavo]
Objavljeno na 30. 10. 2014 17:38:44 | | |
Težave z BOM pri UTF-8, na katere je treba biti pozoren v WordPressu
Zelo zgodaj sem naletel na težavo, in sicer, da se je po namestitvi določenega vtičnika pojavil bel zaslon po kliku za aktivacijo. Nikoli nisem ugotovil, kaj je razlog, prejšnja rešitev pa je bila, da če datoteka ne vsebuje kitajskih znakov, datoteko neposredno prenesem v ASCII kodo, kar se običajno da rešiti. Ko sem danes dobil blog za svojega brata, se je ta situacija ponovila. Po dolgem raziskovanju sem končno našel odgovor.

V Unicode specifikaciji obstaja koncept BOM. BOM - Oznaka za urejanje bajtov, ki je oznaka za urejanje bajtov. Opombo o BOM najdete tukaj:

V UCS kodi obstaja znak z imenom "ZERO WIDTH NO-BREAK SPACE", ki je kodiran kot FEFF. FFFE je neobstoječ lik v UCS, zato se ne bi smel pojaviti v dejanskem prenosu. Specifikacija UCS priporoča, da prenesemo znak "ZERO WIDTH NO-BREAK SPACE" pred prenosom bajtnega toka. Na ta način, če sprejemnik prejme FEFF, to pomeni, da je bajtni tok Big-Endian; Če je FFFE sprejet, to pomeni, da je bajtni tok Little-Endian. Zato se znak "ZERO WIDTH NO-BREAK SPACE" imenuje tudi BOM.

UTF-8 ne zahteva BOM-a za označevanje vrstnega reda bajtov, lahko pa uporablja BOM za prikaz načina kodiranja. UTF-8 kodiranje znaka "ZERO WIDTH NO-BREAK SPACE" je EF BB BF. Torej, če sprejemnik prejme bajtni tok, ki se začne z EF BB BF, ve, da gre za UTF-8 kodiranje.

Windows uporablja BOM za označevanje, kako so besedilne datoteke kodirane.

Poleg tega FAQ-BOM na spletni strani Unicode podrobno pojasnjuje BOM. Uradna naravna avtoriteta, vendar v angleščini, se zdi bolj zahtevna.

V datoteki, kodirani v UTF-8, BOM zavzema tri bajte. Če uporabljaš Notepad za shranjevanje besedilne datoteke kot UTF-8 kodiranje, odpri datoteko z UE in preklopi na heksadecimalno stanje urejanja, da vidiš FFFE na začetku. To je dober način za prepoznavanje datotek, kodiranih z UTF-8, programska oprema uporablja BOM za ugotavljanje, ali je datoteka kodirana z UTF-8, poleg tega pa veliko programov zahteva, da ima uvožena datoteka tudi BOM. Vendar pa je še vedno veliko programske opreme, ki ne prepozna BOM. Ko sem raziskoval Firefox, sem vedel, da v zgodnjih različicah Firefoxa razširitve niso smele imeti BOM-a, vendar so Firefox 1.5 in novejše različice začele podpirati BOM. Zdaj sem ugotovil, da tudi PHP ne podpira BOM.

PHP je bil zasnovan brez upoštevanja BOM-a, kar pomeni, da ne ignorira treh znakov BOM na začetku datoteke kodirane v UTF-8. Ker mora biti v
Kot sem videl v Bo-Blog wiki, Bo-Blog, ki prav tako uporablja PHP, ima težave z BOM. Omenjena je še ena težava: "Zaradi omejitev mehanizma pošiljanja piškotkov v datotekah, ki že imajo na začetku teh datotek BOM, piškotkov ni mogoče poslati (ker je PHP že poslal glavo datoteke, preden je PIŠKOTEK poslan), zato sta funkciji prijave in odjave neveljavni. Vse funkcije, ki temeljijo na COOKIE-jih in SEANSAH, so neveljavne (COOKIES) in seanse. To bi moral biti razlog za prazno stran v ozadju WordPressa, saj vsaka izvedena datoteka vsebuje BOM, vsi trije znaki pa bodo poslani, kar povzroči, da funkcionalnost, ki temelji na piškotkih in sejah, ne uspe.

Rešitev je, da datoteko shranite kot ASCII kodo, če vsebuje le angleške znake (ali znake v ASCII kodiranju). Če uporabljate urejevalnik, kot je UE, kliknite File->Pretvori->UTF-8 v ASCII ali izberite ASCII kodiranje v Shrani as. Če je vrstica, ki se konča v DOS formatu, jo lahko odprete s Notepadom, kliknete Shrani kot in izberete ASCII kodiranje. Če vsebuje kitajske znake, lahko uporabite UE-jevo funkcijo shranjevanja in izberete "UTF-8 no BOM". Prosimo, glejte spodnjo sliko:

Po navodilih Bo-Blog wiki: Editplus je treba shraniti kot gb in nato kot UTF-8. Vendar bodite previdni pri tem, saj bodo vsi znaki, ki niso vključeni v GBK kodiranje, izgubljeni. Če so v datoteki nekateri nekitajski znaki, tega postopka ne uporabljajte. (Iz tega majhnega vidika je UE - UltraEdite-32 res veliko boljši od Editplus, Editplus pa je prelahek)

Drug način, ki sem ga našel, je uporaba urejevalnika datotek, ki ga ponuja WordPress. Ta metoda ni omejena in ni potrebe po prenosu posebnega urejevalnika, saj vsi uporabljajo WordPress. Najprej vklopite dovoljenje za pisanje datoteke, ki jo želite urejati v ftp, nato vnesite WordPress ozadje – > urejevalnik datotek >za upravljanje, vnesite pot za urejanje datoteke in kliknite Uredi datoteko. Prvih treh znakov na zaslonu za urejanje, ki se pojavi, ne boste mogli videti, a to je v redu, postavite kazalec pred prvi znak celotne datoteke in pritisnite tipko Backspace. OK, klikni Posodobi datoteko, jo osveži v ftp, vidiš, da je datoteka 3 bajte manjša, in si končal.

Nazadnje, to je velik problem – vsi, ki želijo pisati lastne vtičnike, urejati tuje vtičnike za lastno uporabo in morajo spreminjati predlogo (kar naj bi potrebovali vsi), je najbolje, da razumejo zgornje znanje, da ne bi bili preobremenjeni, ko pride do težave.





Prejšnji:Poglej osnovnošolce, kako igrajo LOL in vse ubijejo v nekaj sekundah! (Original najnovejšega igralca)
Naslednji:Luo Yonghao je odgovoril, da so "hammer mobilni telefoni pod 2500 vnuki"
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com