ホームページ > バックエンド開発 > PHPチュートリアル > 「file_get_contents()」を使用すると UTF-8 文字が破損するのはなぜですか?

「file_get_contents()」を使用すると UTF-8 文字が破損するのはなぜですか?

Susan Sarandon
リリース: 2024-12-09 22:42:13
オリジナル
421 人が閲覧しました

Why are UTF-8 Characters Corrupted When Using `file_get_contents()`?

file_get_contents() が UTF-8 文字を中断する

この問題は、UTF-8 エンコードを使用して外部サーバーから HTML をロードするときに発生します。 ľ、š、č、ť、ž などの文字が破損し、無効な文字に置き換えられます。

問題の根本

file_get_contents() 関数が発生している可能性があります。エンコードの問題。デフォルトでは、データは ASCII として解釈され、UTF-8 文字を正しく処理できません。

提案された解決策

これを解決するには、別のエンコード方法の使用を検討してください。 .

1.手動エンコーディング変換

mb_convert_encoding() 関数を使用して、取得した HTML を UTF-8 に変換します。

$html = file_get_contents('http://example.com/foreign.html');
$utf8_html = mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html, 'UTF-8', true));
ログイン後にコピー

2.出力エンコーディング

次の行をスクリプトに追加して、出力が適切にエンコードされていることを確認します。

header('Content-Type: text/html; charset=UTF-8');
ログイン後にコピー

3. HTML エンティティの変換

出力する前に、取得した HTML を HTML エンティティに変換します。

$html = file_get_contents('http://example.com/foreign.html');
$html_entities = htmlentities($html, ENT_COMPAT, 'UTF-8');
echo $html_entities;
ログイン後にコピー

4. JSON デコード

外部 HTML が JSON として保存されている場合は、JSON クラスを使用してデコードします。

$json = file_get_contents('http://example.com/foreign.html');
$decoded_json = json_decode($json, true);
$html = $decoded_json['html'];
ログイン後にコピー

これらの手法を利用すると、file_get_contents によって引き起こされるエンコードの問題を回避できます。 () を実行し、UTF-8 文字が適切に表示されることを確認します。

以上が「file_get_contents()」を使用すると UTF-8 文字が破損するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート