Проблеми UTF-8 BOM, на які варто звернути увагу у WordPress Я зіткнувся з проблемою дуже рано: після встановлення певного плагіна з'являвся білий екран після натискання для активації. Я так і не зрозумів, у чому причина, і попереднє рішення — якщо немає китайських ієрогліфів, файл можна безпосередньо перенести в ASCII-код, що зазвичай можна вирішити. Коли сьогодні я отримала блог для брата, ця ситуація повторилася. Після тривалих досліджень я нарешті знайшов відповідь.
У специфікації Unicode є поняття BOM. BOM — Мітка порядку байтів, яка є позначкою порядку байтів. Знайдіть примітку про BOM тут:
У коді UCS є символ під назвою «ZERO WIDTH NO-BREAK SPACE», який кодується як FEFF. FFFE — це неіснуючий персонаж у UCS, тому він не повинен з'являтися у самій трансляції. Специфікація UCS рекомендує перенести символ «ZERO WIDTH NO-BREAK SPACE» перед передачею байтового потоку. Таким чином, якщо приймач отримує FEFF, це означає, що потік байтів є Big-Endian; Якщо отримано FFFE, це означає, що потік байтів є Літтл-Ендіан. Тому символ «НУЛЬОВА ШИРИНА БЕЗ РОЗРИВУ» також називається BOM.
UTF-8 не потребує BOM для позначення порядку байтів, але може використовувати BOM для позначення способу кодування. UTF-8 кодування символу «ZERO WIDTH NO-BREAK SPACE» — EF BB BF. Отже, якщо приймач отримує байтовий потік, що починається з EF BB BF, він знає, що це кодування UTF-8.
Windows використовує BOM для позначення, як кодуються текстові файли.
Крім того, FAQ-BOM на сайті unicode детально пояснює BOM. Офіційна природна влада, але англійською, здається більш трудомісткою.
У файлі, закодованому UTF-8, BOM займає три байти. Якщо ви використовуєте Notepad для збереження текстового файлу як кодування UTF-8, відкрийте файл через UE і перейдіть у стан шістнадцяткового редагування, щоб побачити FFFE на початку. Це хороший спосіб ідентифікувати файли, закодовані UTF-8, програмне забезпечення використовує BOM для ідентифікації, чи закодований файл UTF-8, а багато програм також вимагають, щоб імпортований файл мав BOM. Однак досі існує багато програм, які не розпізнають BOM. Коли я досліджував Firefox, я знав, що в ранніх версіях Firefox розширення не могли мати BOM, але Firefox 1.5 і пізніші версії почали підтримувати BOM. Тепер я дізнався, що PHP також не підтримує BOM.
PHP був розроблений без урахування BOM, що означає, що він не ігнорує три символи BOM на початку файлу, закодованого UTF-8. Оскільки він має бути у Як я бачив у вікі Bo-Blog, Bo-Blog, який також використовує PHP, також має проблеми з BOM. Згадується ще одна проблема: «Через обмеження механізму надсилання COOKIE, у файлах, які вже мають BOM на початку цих файлів, COOKIE не можна надіслати (оскільки PHP вже надіслав заголовок файлу до того, як COOKIE було надіслано), тому функції входу та виходу з виходу є недійсними. Усі функції, які базуються на COOKIE та SESSIONS, є недійсними. Це має бути причиною порожньої сторінки у фоновому режимі WordPress, оскільки будь-який із виконаних файлів містить BOM, і всі три символи будуть відправлені, що призводить до невдачі функціональності, що залежить від cookie та сесій.
Рішення — зберегти файл як ASCII-код, якщо він містить лише англійські символи (або символи в ASCII-кодуванні). Якщо ви використовуєте редактор, наприклад UE, натисніть File->Convert->UTF-8 у ASCII або виберіть ASCII-кодування в розділі Зберегти як. Якщо це рядок, що закінчується у форматі DOS, ви можете відкрити його в Notepad, натиснути Зберегти як і вибрати ASCII-кодування. Якщо там є китайські ієрогліфи, можна скористатися функцією збереження UE і вибрати «UTF-8 no BOM». Будь ласка, зверніться до зображення нижче:
Згідно з інструкціями вікі Bo-Blog: Editplus потрібно зберігати як gb, а потім як UTF-8. Однак будьте обережні при цьому, адже всі символи, які не включені до кодування GBK, будуть втрачені. Якщо у файлі є некитайські ієрогліфи, не використовуйте цей метод. (З цього невеликого аспекту, UE - UltraEdite-32 справді набагато кращий за Editplus, Editplus занадто легкий)
Ще один спосіб, який я знайшов, — це використання редактора файлів, який надає Wordpress. Цей метод не обмежений, і немає потреби завантажувати спеціальний редактор, адже всі користуються Wordpress. Спочатку увімкніть дозвіл запису файлу, який хочете редагувати, у ftp, потім введіть фон WordPress — > редактор файлів > управління, введіть шлях до редагування файлу і натисніть Edit file. Перші три символи ви не побачите на екрані редагування, але це нормально — розмістіть курсор перед першим символом усього файлу і натисніть клавішу Backspace. Добре, натисніть Update File, оновіть його у ftp, ви побачите, що файл на 3 байти менший, і все готово.
Нарешті, це велика проблема: всім, хто хоче писати власні плагіни, редагувати чужі плагіни для власного користування і потрібно змінювати шаблон (це, за оцінками, потрібне всім), краще розуміти вищезазначені знання, щоб не перевантажуватися, коли виникне проблема.
|