Problemi UTF-8 BOM da tenere d'occhio in WordPress Ho incontrato un problema molto presto, cioè dopo aver installato un certo plugin, appariva una schermata bianca cliccando per attivarlo. Non ho mai capito qual è la ragione, e la soluzione precedente è che, se non contiene caratteri cinesi, trasferire direttamente il file in codice ASCII, cosa che generalmente si può risolvere. Quando oggi ho ricevuto un blog per mio fratello, questa situazione è successa di nuovo. Dopo aver fatto molte ricerche, alla fine ho trovato la risposta.
Nella specifica Unicode esiste un concetto di BOM. BOM - Byte Order Mark, che è il marchio dell'ordine byte. Trova una nota sulla BOM qui:
Nel codice UCS c'è un carattere chiamato "ZERO WIDTH NO-BREAK SPACE", codificato come FEFF. FFFE è un personaggio inesistente in UCS, quindi non dovrebbe comparire nella trasmissione reale. La specifica UCS raccomanda di trasferire il carattere "ZERO WIDTH NO-BREAK SPACE" prima di trasmettere il flusso di byte. In questo modo, se il ricevitore riceve un FEFF, indica che il flusso di byte è Big-Endian; Se viene ricevuto FFFE, indica che il flusso di byte è Little-Endian. Pertanto, il carattere "ZERO WIDTH NO-BREAK SPACE" è anche chiamato BOM.
UTF-8 non richiede una lista di materiali per indicare l'ordine dei byte, ma può utilizzare una lista di materiali per indicare come viene codificato. La codifica UTF-8 del carattere "ZERO WIDTH NO-BREAK SPACE" è EF BB BF. Quindi, se il ricevitore riceve un flusso di byte che inizia con EF BB BF, sa che è codifica UTF-8.
Windows utilizza la lista di materiali per segnare come vengono codificati i file di testo.
Inoltre, la FAQ-BOM sul sito Unicode spiega in dettaglio la lista di comando. L'autorità naturale ufficiale, ma in inglese, sembra essere più laboriosa.
In un file codificato in UTF-8, la BOM occupa tre byte. Se usi Notepad per salvare un file di testo come codifica UTF-8, apri il file con UE e passa allo stato di modifica esadecimale per vedere l'FFFE all'inizio. Questo è un buon modo per identificare file codificati UTF-8, il software utilizza la BOM per determinare se il file è codificato in UTF-8, e molti software richiedono anche che il file importato abbia una BOM. Tuttavia, ci sono ancora molti software che non riconoscono la BOM. Quando ho fatto ricerche su Firefox, sapevo che nelle prime versioni di Firefox le estensioni non potevano avere una BOM, ma Firefox 1.5 e versioni successive hanno iniziato a supportare la BOM. Ora ho scoperto che anche PHP non supporta la lista di beni.
PHP è stato progettato senza considerare la BOM, il che significa che non ignora i tre caratteri della BOM all'inizio del file codificato UTF-8. Poiché deve essere in Come ho visto nella wiki di Bo-Blog, anche Bo-Blog, che utilizza PHP, è anch'esso problematico con BOM. Un altro problema viene menzionato: "A causa della limitazione del meccanismo di invio dei COOKIE, nei file che hanno già una lista di materiali all'inizio di questi file, i COOKIE non possono essere inviati (perché PHP ha già inviato l'intestazione del file prima che il COOKIE venga inviato), quindi le funzioni di login e logout sono invalide. Tutte le funzioni che dipendono da COOKIE e SESSIONI sono invalide. Questo dovrebbe essere il motivo della pagina vuota nello sfondo di WordPress, perché uno qualsiasi dei file eseguiti contiene una lista di comando, e tutti e tre i caratteri verranno inviati, causando il fallimento della funzionalità che dipende da cookie e sessioni.
La soluzione è salvare il file come codice ASCII se contiene solo caratteri inglesi (o caratteri nella codifica ASCII). Se stai usando un editor come UE, clicca su File->Convert->UTF-8 in ASCII, oppure seleziona la codifica ASCII in Salva come. Se la terminazione è di una riga in formato DOS, puoi aprirla con Notepad, cliccare su Salva come e selezionare codifica ASCII. Se contiene caratteri cinesi, puoi usare la funzione di salvataggio come UE e selezionare "UTF-8 no BOM". Si prega di consultare l'immagine qui sotto:
Secondo le istruzioni della wiki di Bo-Blog: Editplus deve essere salvato come gb e poi come UTF-8. Tuttavia, fai attenzione quando fai questo: tutti i caratteri non inclusi nella codifica GBK andranno persi. Se ci sono alcuni caratteri non cinesi nel file, non usare questo metodo. (Da questo piccolo aspetto, UE - UltraEdite-32 è effettivamente molto migliore di Editplus, Editplus è troppo leggero)
Un altro modo che ho trovato è usare l'editor di file fornito da Wordpress. Questo metodo non è limitato, e non c'è bisogno di scaricare un editor speciale, dopotutto, tutti usano Wordpress. Per prima cosa, attiva il permesso di scrittura del file che vuoi modificare in ftp, poi inserisci lo sfondo di WordPress - > editor di file gestione->, inserisci il percorso per modificare il file e clicca su Modifica file. Non potrai vedere i primi tre caratteri nella schermata di modifica che appaiono, ma va bene così, posiziona il cursore prima del primo carattere dell'intero file e premi il tasto Backspace. OK, clicca su Aggiorna file, aggiornalo in ftp, puoi vedere che il file è 3 byte più piccolo e hai finito.
Infine, questo è un grosso problema: tutti coloro che vogliono scrivere i propri plugin, modificare i plugin di altri per il proprio uso e devono modificare il template (si stima che questo sia necessario a tutti), è meglio comprendere queste conoscenze sopra, così da non sentirsi sopraffatti quando si presenta un problema.
|