(-XML-) gbk テキスト

WBOY
WBOYオリジナル
2016-06-23 13:11:441321ブラウズ

ソースファイルがgbkで書かれているのですが、utf8形式に変更するとエラーになります。その理由を教えてください。

//这是出错的gbk编码的文件            header('content-type:application/xml;charset=gbk ');            $x = new DOMDocument('1.0', 'gbk');            $a = $x->createElement('a');            $x->appendChild( $a );                        $you = $x->createTextNode('你');            $a->appendChild( $you );            echo $x->saveXML();

==================================以下はエラーのない U8 エンコードされたソース ファイルです== ==== ============================
//这是U8编码的源文件             header('content-type:application/xml;charset=utf-8 ');            $x = new DOMDocument('1.0', 'utf-8');            $a = $x->createElement('a');            $x->appendChild( $a );            $you = $x->createTextNode('你');            $a->appendChild( $you );            echo $x->saveXML();


ディスカッションに返信 (解決策)

XML の作業文字セットは utf-8 です

作業文字セット U8 によるものだとすると、エンコーディングを指定できるパラメーター 2 の存在にはどのような意味があるのでしょうか?また、エラーレポートのconv errorとは何でしょうか?

XML の作業文字セットは utf-8 です

変換に失敗しました

指定された作業文字セットは一部の Microsoft 製品でのみ有効です (XML は Microsoft によって発明されたため)

php5.3 以降は読み込むことができますutf-8 以外の文字セットを含む XML ドキュメントを取得する

PHP が xml オブジェクト内の文字列を gbk 形式で出力する方法はありますか?

conv エラー 変換に失敗しました

一部の Microsoft 製品でのみ有効な作業文字セットを指定してください (XML は Microsoft によって発明されたため)

php5.3 以降では、非 utf-8 文字セットで XML ドキュメントを読み取ることができます

私が言ったことは正確ではありません

header('content-type:application/xml;charset=gbk');$x = new DOMDocument('1.0', 'gbk');$a = $x->createElement('a');$x->appendChild( $a );             $you = $x->createTextNode(iconv('gbk', 'utf-8', '你'));$a->appendChild( $you );echo $x->saveXML();

出力が実際に gbk でエンコードされたコンテンツであることがわかります
言い換えれば、指定された文字セットを使用して XML ドキュメントを出力することが可能です

しかし、これは動作する文字セットが変更されることはありませんは utf-8 です。事実

conv エラーは、内部 utf-8 文字セットを指定された出力文字セットに変換するときに生成されます

$you = $x->createTextNode('you'); として扱われます。 utf- 8文字を処理すると当然エラーが発生します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。