2012-03-27 7 views
0

私はフラッシュを使用してUTF8ページに内容を読み込みます。UTF8ページにはユニコードがあります。 問題は、Flashがデータをロードすると、それは????????代わりにすべてのUnicode。フラッシュにutf8を表示していますか?

何が問題なのですか?

答えて

1

デフォルトでは、Flashは文字列をUTF-8を使用してエンコードされているものとして扱います。印刷できない文字や無効/欠落しているグリフの代わりになる可能性のある文字が表示されている理由は、System.useCodepagetrueに設定している可能性があります。

文字を表示するために使用されるフォントに、必要な文字のグリフがない可能性があります。 Font.hasGlyphs("string with the glyphs");を使用して、テキストを表示できることを確認することができます。これは通常、埋め込みフォントにのみ適用されます。

さらに、表示しようとしているソーステキストがUTF-8でエンコードされた文字列ではない可能性があります。 XMLやHTMLのような特に普及しているファイルフォーマットの中には、実際のペイロードとは無関係にフォーマットの宣言を使用するものがあります(例XMLタグ:<?xml encoding="utf-8" ?>は、ドキュメントの実際のエンコーディングに関係なくXMLに付加できます)。テキストがUTF-8であることを確認するには、ByteArrayとして読み取り、すべてのバイトの最初のビットが0に設定されていることを確認します。全角文字を使用するシングルバイトエンコーディングでは、最初のビットを使用して文字をエンコードし、 UTF-8はそれを決してしません。

1

Flashは内部的に文字列を表すためにUTF-8を使用しているため、スタック全体がUTF-8エンコーディングを使用する場合は問題ありません。

おそらく途中で暗黙のデコード/エンコードのステップがあります。 これは残念なことに、実際には100万件になる可能性があります。最初から開始し、トレースやログメッセージを挿入して、変換が失敗する場所を確認します。あなたのXMLコンテンツがUTF-8を使用していることを確認してください。特にPHPを使用している場合は、すべてのPHPソースファイルがUTF-8エンコーディングで保存されていることを確認してください。ソースファイルは、あなたの文字エンコーディングを破ります。また、HTML要求/応答ヘッダーを検証して、エンコーディングの不一致がないかどうかを確認します。

関連する問題