ホームページ  >  記事  >  バックエンド開発  >  FLASH を使用して PHP で生成された XML を取得することが文字化けの究極の解決策です_PHP チュートリアル

FLASH を使用して PHP で生成された XML を取得することが文字化けの究極の解決策です_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:38:18939ブラウズ

私は信じられないような問題と戦うことを恐れていません。誰が一番優れているか見てみましょう。コーディングで障害に遭遇してから長い時間が経ちましたが、bkJia.com は今日、また小さなティーバッグに遭遇しました。PHP で生成された XML が、FLASH を使用して取得すると文字化けしていました。探索の末にようやく解決しました。それを記録し、一般的な解決策も記録します。 XML<->FLASH の文字化けコードも発生した場合は、すぐに確認できます:

1. XML にまったく問題がないことが確信できるケース:
まず、フラッシュが XML を読み取るときに文字化けするコードには、静的属性 System.useCodepage が関係しています
公式説明: 「外部テキスト ファイルを解釈するためにどのコード ページを使用するかを Flash Player に指示するブール値。」 デフォルトは false です。
UTF8 でエンコードされた外部テキスト ファイルを使用する場合、bkJia.com はそれを心配する必要はありません。UTF8 でエンコードされていないテキスト ファイルを使用し、テキストに中国語が含まれる場合は、Flash が許可するように true に設定する必要があります。文字化けせずに文字を読むことができます。
AS3 では、最初に flash.system.System をインポートしてから、System.useCodePage=true; を設定できます。

2. PHP に UTF-8 でエンコードされた XML を生成させたい:

XML に中国語の文字を含めるには、UTF-8 エンコーディングを使用するのが最善です。 DOM を使用して XML を作成する前に、 $dom_XML = new DomDocument('1.0','UTF-8'); として宣言します。2 番目のパラメータは、XML ドキュメントの宣言部分のエンコード値に対応します。ただし、これは宣言されたエンコーディングにすぎないことに注意してください。$dom_XML->saveXML(); を使用して実際に生成される XML ファイルは、PHP スクリプトのソース ファイルと同じエンコーディング形式です。つまり、「どのエンコーディングが PHP ですか?」は何のエンコーディングです。」

3. XML ファイル宣言のエンコーディングは UTF-8 であり、フラッシュで useCodepage がどのような値に設定されていても、読み取り値は依然として文字化けします

。 このような状況に遭遇することがよくありますが、その理由は次のとおりです。宣言部分は UTF-8 ですが、ファイル自体は UTF-8 ではありません (私自身は ANSI エンコードされています、汗)。
これは深刻な問題を引き起こします。Firefox ブラウザは XML を正常に解釈できますが、IE (TT などの IE Core ブラウザを含む) では文字が間違っているというメッセージが表示され、Flash でも文字化けが表示されます。
この状況に対処するには 2 つの方法があります:

XML 宣言部分を GB2312 などの非 UTF-8 に変更し、FLASH useCodepage=true を設定します。 XML をメモ帳で開き、「名前を付けて保存」コマンドを使用して UTF-8 として保存します

つまり、エンコード宣言はファイル自体のエンコードと一致し、名前と矛盾することはできません。

4. PHP ソース ファイルは UTF8 でエンコードされていません。FLASH が中国語の文字をサポートできるようにする XML を生成するにはどうすればよいですか?それが私に起こったことです:

PHP は ANSI で保存されており、DOM を使用して生成された XML は当然 ANSI です。bkJia.com によってエンコードされた XML ファイルに中国語の文字が含まれている場合、エンコードが UTF-8 であると宣言されていても正しく読み取ることができません。

この前提のもと、FLASH で XML を文字化けせずに正しく読み取るには、エンコードを GB2312 に設定する必要があります。
しかし、PHP の DOM では、GB2312 を使用して漢字を書くことはできません (理解できません。アドバイスをお願いします)。 new DomDocument(’1.0’,’GB2312’); の場合、XML 保存時に「conv エラーのため出力変換に失敗しました。bytes 0xCE 0xD2 0x5D 0x5D」などのエラーが発生します。つまり、私の ANSI PHP は、UTF-8 として宣言されているものの、実際には ANSI である XML ファイルしか生成できません。当然、このようなファイルは FLASH によって文字化けとして読み取られます (記事 3 を参照)。
私の解決策:
PHP が UTF-8 宣言を含む XML を生成した後、XML ファイルを開き、ヘッダー宣言を書き換えて UTF-8 を GB2312 に置き換えるステップが追加されます。ふふ、FLASHでもIEでもFFでも大丈夫ですよ!


http://www.bkjia.com/PHPjc/486493.html

tru​​ehttp://www.bkjia.com/PHPjc/486493.html技術記事信じられないほどの問題と戦うことを恐れない人、誰が最も優れた鼻を持っているかを見てみましょう。久しぶりにコーディングで障害が発生しました。今日、PHP100.com で、PHP で生成された XML が FLASH で取得されました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。