Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 6768|Válasz: 0

Az UTF-8 kódolási probléma BOM részletesen van leírva

[Linket másol]
Közzétéve 2014. 10. 30. 17:38:44 | | |
UTF-8 BOM problémákra érdemes figyelni a WordPressben
Nagyon korán találkoztam egy problémával, vagyis egy bizonyos plugin telepítése után fehér képernyő jelent meg, amikor aktiválásra kattintottam. Sosem tudtam rájönni, mi az oka, és az előző megoldás az, hogy ha nem tartalmaz kínai karaktereket, akkor közvetlenül áthelyezzük a fájlt ASCII kódba, ami általában megoldható. Amikor ma kaptam egy blogot a bátyámnak, ez a helyzet megint megtörtént. Hosszú kutatás után végre megtaláltam a választ.

A Unicode specifikációban van egy BOM fogalma. BOM - Bájt sorrendi jel, ami a bájtsorrend jel. Itt találsz egy megjegyzést a BOM-ról:

Az UCS kódban van egy karakter, amit "ZERO WIDTH NO-BREAK SPACE" néven írnak, amely FEFF-ként van kódolva. Az FFFE nem létezik karakter az UCS-ben, így nem szabadna megjelennie a tényleges adásban. Az UCS specifikációja azt javasolja, hogy a "ZERO WIDTH NO-BREAK SPACE" karaktert továbbítsuk a bájtfolyam továbbítása előtt. Így, ha a vevő kap egy FEFF-et, az azt jelzi, hogy a bájtfolyam Big-Endian; Ha FFFE érkezik, az azt jelzi, hogy a bytestream Little-Endian. Ezért a "ZERO WIDTH NO-BREAK SPACE" karaktert BOM-nak is nevezik.

Az UTF-8 nem igényel BOM-ot a bájtsorrend megjelöléséhez, de BOM-ot használhat a kódolás megjelzésére. A "ZERO WIDTH NO-BREAK SPACE" karakter UTF-8 kódolása EF BB BF. Tehát ha a vevő egy EF BB BF-vel kezdődő bájtfolyamot kap, akkor tudja, hogy UTF-8 kódolásról van szó.

A Windows a BOM-ot használja arra, hogy megjelölje, hogyan kódolják a szövegfájlokat.

Ezen felül az unicode weboldalán található GYIK-BOM részletesen bemutatja a BOM-ot. A hivatalos természetes hatóság, de angolul, sokkal nehezebbnek tűnik.

Egy UTF-8 kódolt fájlban a BOM három bájtot foglal el. Ha Notepaddal mentesz egy szövegfájlt UTF-8 kódolással, nyisd meg a fájlt UE-vel, és válts hexadecimális szerkesztési állapotra, hogy az elején lásd az FFFE-t. Ez jó módja az UTF-8 kódolt fájlok azonosításának, a szoftverek a BOM-ot használják annak megállapítására, hogy a fájl UTF-8 kódolt-e, és sok szoftver előírja, hogy az importált fájlnak BOM-nak kell lennie. Ugyanakkor még mindig sok olyan szoftver van, amely nem ismeri fel a BOM-ot. Amikor a Firefoxot kutattam, tudtam, hogy a Firefox korai verzióiban a bővítményeknek nem lehet BOM-ja, de a Firefox 1.5 és későbbi verziók elkezdték támogatni a BOM-ot. Most rájöttem, hogy a PHP sem támogatja a BOM-ot.

A PHP-t a BOM figyelmen kívül hagyta volna a tervezés, ami azt jelenti, hogy nem hagyja figyelmen kívül a BOM három karakterét az UTF-8 kódolt fájl elején. Mivel annak bent kell lennie
Ahogy a Bo-Blog wikiben láttam, a Bo-Blog, amely szintén PHP-t használ, szintén problémákkal küzd a BOM-val. Egy másik probléma is megemlíthető: "A COOKIE küldési mechanizmus korlátozottsága miatt, azokban a fájlokban, amelyeknek már van BOM a fájlok elején, nem lehet COOKIE-t küldeni (mert a PHP már elküldte a fájlfejlécet, mielőtt a COOKIE elküldődött), így a bejelentkezési és kijelentkezési funkciók érvénytelenek. Minden olyan funkció, amely COOKIE-re és SESSION-ra támaszkodik, érvénytelen. Ez lehet az oka annak, hogy a WordPress háttérben üres oldal van, mert bármelyik lefuttatott fájl tartalmaz egy BOM-ot, és mindhárom karakter kikerül, ami miatt a sütiken és üléseken alapuló funkciók meghibáslanok.

A megoldás az, ha csak angol karaktereket tartalmaz (vagy ASCII kódolásban szereplőket) ASCII kódként elmented. Ha olyan szerkesztőt használsz, mint az UE, kattints a File->Convert->UTF-8 to ASCII gombra, vagy válaszd az ASCII kódolást a Save As (Save As As) opcióban. Ha egy DOS formátumú sor végződik, megnyithatod Notepaddal, kattinthatsz a Save As gombra, és választhatod az ASCII kódolást. Ha kínai karaktereket tartalmaz, használhatod az UE mentését funkcióként, és kiválaszthatod az "UTF-8 no BOM" opciót. Kérjük, nézze meg az alábbi képet:

A Bo-Blog wiki utasításai szerint: Az Editplus-t GB-ként, majd UTF-8-ként kell elmenteni. Azonban légy óvatos, mert minden karakter, amely nem szerepel a GBK kódolásban, elveszik. Ha a fájlban van néhány nem kínai karakter, ne használd ezt a módszert. (Ebből a kis szempontból az UE - UltraEdite-32 valóban sokkal jobb, mint az Editplus, az Editplus túl könnyű)

Egy másik lehetőség, amit találtam, hogy a WordPress által biztosított fájlszerkesztőt használom. Ez a módszer nem korlátozott, és nincs szükség speciális szerkesztő letöltésére, hiszen mindenki Wordpresset használ. Először kapcsold be a fájl írási engedélyét az FTP-ben, majd add be a WordPress háttér- > menedzsment-> fájlszerkesztőt, írd be a fájl szerkesztési útvonalát, és kattints a fájl szerkesztésére. Nem fogod látni az első három karaktert a szerkesztési képernyőn, de ez rendben van, helyezd a kurzorodat az egész fájl első karaktere előtt, és nyomd meg a Backspace billentyűt. Rendben, kattints a Fájl frissítésére, frissítsd ftp-ben, látod, hogy a fájl 3 bájttal kisebb, és kész.

Végül ez egy nagy probléma, mindenki, aki saját plugint szeretne írni, mások pluginjeit saját használatra szerkeszteni, és módosítani kell a sablont (erre mindenkinek szüksége van rá), a legjobb megérteni a fent említett tudást, hogy ne érezze magát túlterhelve, ha probléma adódik.





Előző:Nézd meg, ahogy általános iskolások játszanak LOL-ban, és másodpercek alatt mindent megölnek! (Legújabb játékos eredeti)
Következő:Luo Yonghao azt válaszolta, hogy "a 2500 alatti mobiltelefonok unokák"
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com