Home >Backend Development >PHP Tutorial >Using FLASH to obtain the XML generated by PHP is the ultimate solution to garbled characters_PHP Tutorial
Finally solved after exploration. Record it, and also record the general solution. If you also encounter XML<->FLASH garbled code, you can quickly check:
1. Situations when you are sure that there is absolutely no problem with XML:
First of all, the garbled code when flash reads xml involves the static attribute System.useCodepage
Official description: "A Boolean value that tells Flash Player which code page to use to interpret external text files." Defaults to false.
If we use UTF8-encoded external text files, bkJia.com does not need to worry about it. If we use non-UTF8-encoded text files and Chinese characters appear in the text, we need to set it to true so that flash can read the characters without garbled characters. .
In AS3, you can first import flash.system.System; and then set System.useCodePage=true;
2. Want PHP to generate UTF-8 encoded XML:
To have Chinese characters in XML, it is best to use UTF-8 encoding. Before using DOM to create XML, declare it as $dom_XML = new DomDocument('1.0','UTF-8'); the second parameter corresponds to the encoding value of the declaration part of the XML document. But note: this is only the declared encoding. The actual generated xml file using $dom_XML->saveXML(); is the same encoding format as the PHP script source file, that is, "What encoding is your PHP? The generated file is What encoding? ”
3. The XML file declaration encoding is UTF-8. No matter what value useCodepage is set to, the reading in flash is still garbled
This situation is often encountered, usually because: although the declaration part is UTF-8, the file itself But it is not UTF-8 (I am ANSI encoded myself, sweat).
That will cause a serious problem: Firefox browser can interpret XML normally, but IE (including IE core browsers such as TT) prompts that there are wrong characters, and Flash also displays garbled characters!
There are two ways to deal with this situation:
Change the XML declaration part to non-UTF-8, such as GB2312, and then set FLASH useCodepage=true;
Open the XML with Notepad, Use the "Save As" command to save it as UTF-8
That is, let the encoding statement match the encoding of the file itself, and it cannot be inconsistent with the name.
4. The PHP source file is not UTF8 encoded. How to generate XML that allows FLASH to support Chinese characters? This is the situation I encountered:
PHP is saved by ANSI, and the XML generated using DOM is naturally ANSI. If the XML file encoded by bkJia.com contains Chinese characters, even if the encoding is declared as UTF- 8, also cannot be read correctly.
Under this premise, if you want FLASH to correctly read XML without garbled characters, you must set the encoding to GB2312.
But PHP’s DOM cannot use GB2312 to write Chinese characters (I don’t understand, please give me some advice)? If new DomDocument('1.0′,'GB2312′); an error will occur when saving XML: "output conversion failed due to conv error, bytes 0xCE 0xD2 0×5D 0×5D" or the like. In other words, my ANSI PHP can only generate XML files that are declared as UTF-8 but are actually ANSI. Of course, such files will be read as garbled characters by FLASH (refer to Article 3).
My solution:
After PHP generates XML with UTF-8 declaration, I add a step: open the XML file and rewrite the header declaration to replace UTF-8 For GB2312. Hehe, FLASH, IE, and FF are all fine!