この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 6768|答える: 0

UTF-8エンコーディング問題BOMについて詳細に説明しています

[リンクをコピー]
掲載地 2014/10/30 17:38:44 | | |
Wordpressで注意すべきUTF-8 BOMの問題
私はかなり早い段階で問題に直面しました。特定のプラグインをインストールした後、アクティベートボタンを押すと白い画面が表示されるというものでした。 理由は分かっていませんが、以前の解決策は中国語の文字がなければファイルを直接ASCIIコードに転送するというもので、これは一般的に解決可能だというものでした。 今日、兄のためにブログを書いたとき、また同じ状況が起こりました。 長い時間調べた結果、ついに答えを見つけました。

Unicode仕様にはBOMの概念があります。 BOM - バイトオーダーマーク、バイトオーダーマークです。 BOMに関するメモはこちらでご覧いただけます:

UCSコードには「ZERO WIDTH NO-BREAK SPACE」という文字があり、FEFFとしてエンコードされています。 FFFEはUCSでは存在しない文字なので、実際の送信には登場しません。 UCS仕様では、バイトストリームを送信する前に「ZERO WIDTH NO-BREAK SPACE」という文字を転送することを推奨しています。 このようにして、受信側がFEFFを受け取った場合、そのバイトストリームがビッグエンディアンであることを示します。 FFFEが受信された場合、バイトストリームがリトルエンディアンであることを示します。 したがって、「ZERO WIDTH NO-BREAK SPACE」という文字はBOMとも呼ばれます。

UTF-8はバイト順を示すためにBOMを必要としませんが、符号化方法を示すためにBOMを使うことができます。 「ZERO WIDTH NO-BREAK SPACE」のUTF-8エンコーディングはEF BB BFです。 つまり、受信側がEF BB BFで始まるバイトストリームを受け取った場合、それはUTF-8エンコーディングであることがわかります。

WindowsはBOMを使ってテキストファイルのエンコード方法をマークします。

さらに、UnicodeのウェブサイトにあるFAQ-BOMではBOMについて詳しく説明されています。 公式な自然権威は英語で書かれており、より手間がかかるようです。

UTF-8エンコードファイルでは、BOMは3バイトを占めます。 NotepadでテキストファイルをUTF-8エンコーディングで保存する場合は、UEでファイルを開いて16進数編集状態に切り替えると、FFFEが最初に表示されます。 これはUTF-8エンコードファイルを識別する良い方法であり、ソフトウェアはBOMを使ってUTF-8エンコードかどうかを判別し、多くのソフトウェアはインポートされたファイルにBOMを付けることも要求します。 しかし、BOMを認識しないソフトウェアはまだ多く存在します。 Firefoxについて調べていたとき、初期のバージョンでは拡張機能にBOMが設定できなかったことを知っていましたが、Firefox 1.5以降のバージョンではBOMのサポートが始まってきました。 しかし、PHPもBOMをサポートしていないことがわかりました。

PHPはBOMを考慮しずに設計されており、UTF-8エンコードファイルの冒頭にあるBOMの3文字を無視しません。 なぜなら、
Bo-Blogのウィキで見たように、PHPも使っているBo-BlogはBOMに悩まされています。 もう一つの問題はこう述べられています:「COOKIE送信機構の制限により、すでにBOMが先頭にあるファイルでは、PHPがCOOKIE送信前にファイルヘッダーを送信しているため、COOKIEを送信できません。そのため、ログインおよびログアウト機能は無効です。 COOKIEやSESSIONに依存するすべての関数は無効です。 これがWordPressのバックグラウンドに空白ページが残る理由であるはずです。実行されたファイルにはBOMが含まれており、3文字すべてが送信されるため、クッキーやセッションに依存している機能が失敗するからです。

解決策は、英語文字(またはASCIIエンコーディングの文字)のみを含むファイルはASCIIコードとして保存することです。 UEなどのエディタを使用している場合は、File->Convert->UTF-8からASCIIに変換するか、Save As.O.で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のバックグラウンド - >管理>ファイルエディターを入力し、編集パスを入力して「ファイルを編集」をクリックします。 編集画面の最初の3文字は見えませんが、それで問題ありません。カーソルをファイル全体の最初の文字の前に置き、Backspaceキーを押してください。 OK、ファイル更新をクリックしてftpでリフレッシュすると、ファイルが3バイト小さくなっているのがわかります。これで完了です。

最後に、これは大きな問題です。自分のプラグインを書きたい人や他人のプラグインを自分のために編集したい人、テンプレートを修正したい人(これは全員が必要と推定される)には、上記の知識を理解しておくことが、問題が起きたときに圧倒されないようにするのが最善です。





先の:小学生たちが遊んでいて、笑って数秒で全てを倒すのを見てください! (最新プレイヤーオリジナル)
次に:羅永浩は「2500台未満のハンマー携帯電話は孫だ」と応じました。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com