ホームページ  >  記事  >  バックエンド開発  >  PHP UTF8 ファイルの署名の問題_PHP チュートリアル

PHP UTF8 ファイルの署名の問題_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:43:46891ブラウズ

つまり、BOM 形式のエンコーディングがあるか、BOM 形式のエンコーディングがありません。
ファイルの内容を見ると、違いはわかりません。例として次のファイル (schema.sqlite.sql) の内容を取り上げます。
schema.sqlite.sql

コードをコピーします。 コードは次のとおりです:

CREATE TABLE guestbook (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT、
email VARCHAR(32) NOT NULL DEFAULT 'noemail@test.com'、
comment TEXT NULL、
created DATETIME NOT NULL
);
CREATE INDEX "id" ON " guestbook" ("id");
署名されていない場合、ファイル サイズは 232 バイト、署名されている場合、ファイル サイズは 235 バイトです。
UTF8 署名には 3 バイト (内容: EFBBBF) があり、ファイルが UTF8 でエンコードされていることをソフトウェアに伝えるために特別に使用されます。
通常の状況では、署名の有無はエディタや他のソフトウェアがテキストの内容に基づいて UTF8 であるかどうかを推測できるため、問題は発生しません。
しかし、それでも場合によっては、不服申し立て書類などの問題が発生する可能性があります。このファイルは SQL ステートメント ファイルです。プログラムは次のステートメント (php) を通じて SQL を実行する必要があります:

コードをコピーします コードは次のとおりです:
$schemaSql = file_get_contents(dirname(__FILE__) . '/schema.sqlite .sql');
$dbAdapter->getConnection()->exec($schemaSql);

この場合、「UTF8 署名は 3 バイトを使用する」ため、問題が発生します。実際にはファイルの先頭にあります。その結果、上記のステートメントは正常に実行できません。
解決策も非常に簡単で、ファイルの UTF8 署名を削除するだけです。
もちろん、上記のファイルの内容は実際にはシングルバイトなので、UTF8エンコーディングで保存する必要はありません。

補足: シングルバイトのコンテンツを含むファイルに UTF8 署名が追加されていない限り、そのファイルを再度開いたときは、引き続きシステムのデフォルトのエンコーディングが使用されます。

http://www.bkjia.com/PHPjc/320710.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/320710.html技術記事つまり、BOM 形式のエンコーディングがあるか、BOM 形式のエンコーディングがありません。 ファイルの内容を見ると、違いはありません。例として、次のファイル (schema.sqlite.sql) の内容を考えてみましょう: schema.sq...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。