Problemy z BOM UTF-8, na które warto zwrócić uwagę w WordPressie Bardzo wcześnie napotkałem problem, czyli po zainstalowaniu konkretnej wtyczki pojawiał się biały ekran po kliknięciu aktywacji. Nigdy nie ustaliłem, jaka jest przyczyna, a poprzednie rozwiązanie jest takie, że jeśli nie zawiera znaków chińskich, plik należy bezpośrednio przenieść do kodu ASCII, co zazwyczaj można rozwiązać. Kiedy dziś założyłem bloga dla brata, ta sytuacja zdarzyła się ponownie. Po długich poszukiwaniach w końcu znalazłem odpowiedź.
W specyfikacji Unicode istnieje koncepcja BOM. BOM - Byte Order Mark, czyli znak kolejności bajtów. Znajdź notatkę o BOM tutaj:
W kodzie UCS znajduje się znak o nazwie "ZERO WIDTH NO-BREAK SPACE", zakodowany jako FEFF. FFFE to postać nieistniejąca w UCS, więc nie powinna pojawiać się w samej transmisji. Specyfikacja UCS zaleca przeniesienie znaku "ZERO WIDTH NO-BREAK SPACE" przed przesłaniem strumienia bajtów. W ten sposób, jeśli odbiornik otrzyma FEFF, oznacza to, że strumień bajtów jest Big-Endian; Jeśli FFFE zostanie odebrane, oznacza to, że strumień bajtów jest Little-Endian. Dlatego znak "ZERO WIDTH NO-BREAK SPACE" nazywany jest również BOM.
UTF-8 nie wymaga BOM do wskazania kolejności bajtów, ale może użyć BOM-u do wskazania sposobu kodowania. Kodowanie znaku "ZERO WIDTH NO-BREAK SPACE" w UTF-8 to EF BB BF. Jeśli odbiornik otrzyma strumień bajtów zaczynający się od EF BB BF, wie, że to kodowanie UTF-8.
Windows używa BOM do oznaczania, jak kodowane są pliki tekstowe.
Dodatkowo, FAQ-BOM na stronie unicode szczegółowo wyjaśnia BOM. Oficjalna władza naturalna, ale po angielsku, wydaje się być bardziej pracochłonna.
W pliku zakodowanym UTF-8 BOM zajmuje trzy bajty. Jeśli używasz Notepada do zapisania pliku tekstowego jako kodowanie UTF-8, otwórz plik w UE i przełącz się na stan edycji szesnastkowej, aby zobaczyć FFFE na początku. To dobry sposób identyfikacji plików zakodowanych UTF-8, oprogramowanie używa BOM do określenia, czy plik jest zakodowany UTF-8, a wiele programów wymaga również, aby importowany plik miał BOM. Jednak wciąż istnieje wiele oprogramowania, które nie rozpoznaje BOM. Kiedy badałem Firefox, wiedziałem, że we wczesnych wersjach rozszerzenia nie mogły mieć BOM, ale Firefox 1.5 i późniejsze wersje zaczęły obsługiwać BOM. Teraz dowiedziałem się, że PHP też nie obsługuje BOM.
PHP zostało zaprojektowane bez uwzględnienia BOM, co oznacza, że nie ignoruje trzech znaków BOM na początku pliku zakodowanego przez UTF-8. Ponieważ musi być w Jak widziałem w wiki Bo-Blog, Bo-Blog, który również korzysta z PHP, również ma problem z BOM. Wspomniano o innym problemie: "Ze względu na ograniczenia mechanizmu wysyłania COOKIE, w plikach, które już mają BOM na początku tych plików, COOKIE-ki nie mogą być wysyłane (ponieważ PHP już wysłało nagłówek pliku przed wysłaniem COOKIE), więc funkcje logowania i wylogowania są nieprawidłowe. Wszystkie funkcje oparte na COOKIE-ach i SESach są nieprawidłowe. To powinien być powód pustej strony w tle WordPressa, ponieważ każdy z wykonywanych plików zawiera BOM, a wszystkie trzy znaki zostaną wysłane, co powoduje awarię funkcjonalności opartej na ciasteczkach i sesjach.
Rozwiązaniem jest zapisanie pliku jako kodu ASCII, jeśli zawiera on tylko znaki angielskie (lub znaki w kodowaniu ASCII). Jeśli używasz edytora, takiego jak UE, kliknij File->Convert->UTF-8 na ASCII lub wybierz kodowanie ASCII w Save As. Jeśli to linia kończąca się w formacie DOS, możesz ją otworzyć w Notatniku, kliknąć Zapisz jako i wybrać kodowanie ASCII. Jeśli zawiera znaki chińskie, możesz użyć funkcji zapisu UE i wybrać "UTF-8 no BOM". Proszę odnieść się do poniższego obrazka:
Zgodnie z instrukcjami z wiki Bo-Blog: Editplus musi być zapisany jako GB, a następnie jako UTF-8. Jednak należy zachować ostrożność – wszystkie znaki nieobecne w kodowaniu GBK zostaną utracone. Jeśli w pliku są znaki niechińskie, nie używaj tej metody. (Z tego małego punktu widzenia, UE - UltraEdite-32 jest rzeczywiście dużo lepszy niż Editplus, Editplus jest zbyt lekki)
Innym sposobem, który znalazłem, jest użycie edytora plików udostępnionego przez Wordpressa. Ta metoda nie jest ograniczona i nie ma potrzeby pobierania specjalnego edytora, w końcu wszyscy korzystają z WordPressa. Najpierw włącz uprawnienia do zapisu pliku, który chcesz edytować w ftp, potem wejdź w tło WordPress – > edytor plików > zarządzania, wpisz ścieżkę do edycji pliku i kliknij Edytuj plik. Nie zobaczysz pierwszych trzech znaków na ekranie edycji, który się pojawia, ale to w porządku, ustaw kursor przed pierwszym znakiem całego pliku i naciśnij Backspace. OK, kliknij Aktualizuj plik, odśwież go w ftp, zobaczysz, że plik jest o 3 bajty mniejszy i gotowe.
Wreszcie, to poważny problem – wszyscy, którzy chcą pisać własne wtyczki, edytować wtyczki innych dla własnych potrzeb i muszą modyfikować szablon (co szacuje się, że będzie to potrzebne każdemu), najlepiej jest zrozumieć powyższą wiedzę, aby nie być przytłoczonymi w przypadku problemu.
|