Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 6768|Відповідь: 0

Задача кодування UTF-8 BOM детально описана

[Копіювати посилання]
Опубліковано 30.10.2014 17:38:44 | | |
Проблеми 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 байти менший, і все готово.

Нарешті, це велика проблема: всім, хто хоче писати власні плагіни, редагувати чужі плагіни для власного користування і потрібно змінювати шаблон (це, за оцінками, потрібне всім), краще розуміти вищезазначені знання, щоб не перевантажуватися, коли виникне проблема.





Попередній:Подивіться, як учні початкової школи грають LOL і вбивають усе за секунди! (Останній гравець Оригінал)
Наступний:Ло Юнхао відповів, що «молоткові мобільні телефони менше 2500 — це онуки»
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com