ID Artikel: 275883 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0

INFO: XML Encoding dan metode antarmuka DOM

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Salah satu keuntungan utama Extensible Markup Language (XML) data adalah bahwa platform independen. Namun, pengkodean benar harus ditetapkan untuk memastikan pengiriman tepat XML data antara berbagai platform. Kertas putih "Bagaimana untuk mengkodekan Data XML" alamat masalah pengkodean XML umum secara rinci:
http://MSDN.Microsoft.com/en-us/library/aa468560.aspx (http://msdn.microsoft.com/en-us/library/aa468560.aspx)
Dalam kebanyakan skenario, kesalahan pengkodean XML berasal dari pengkodean pengaturan Microsoft XML parser (MSXML) metode dan antarmuka standar yang berbeda. Pemahaman yang jelas tentang pengaturan default ini akan membantu dalam mencegah kesalahan pengkodean.

INFORMASI LEBIH LANJUT

XML penyandiaksaraan

MSXML mendukung semua penyandiaksaraan yang didukung oleh Microsoft Internet Explorer. Internet Explorer dukungan tergantung pada paket bahasa yang diinstal pada komputer; informasi ini disimpan di bawah kunci registri berikut:
HKEY_CLASSES_ROOT\MIME\Database\Charset
MSXML memiliki dukungan asli untuk penyandiaksaraan berikut:
UTF-8
UTF-16
UCS-2
UCS-4
ISO-10646-UCS-2
UNICODE-1-1-UTF-8
UNICODE-2-0-UTF-16
UNICODE-2-0-UTF-8
Juga mengakui (internal menggunakan WideCharToMultibyte Fungsi API untuk pemetaan) penyandiaksaraan berikut:
US-ASCII
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
WINDOWS-1250
WINDOWS-1251
WINDOWS-1252
WINDOWS-1253
WINDOWS-1254
WINDOWS-1255
WINDOWS 1256
WINDOWS 1257
WINDOWS-1258
Tempat yang tepat untuk menentukan penyandian data adalah deklarasi XML. Misalnya, jika data dikodekan dengan standar ISO-8859-1, Anda dapat menetapkan ini sebagai berikut:
<?xml version="1.0" encoding="ISO-8859-1"?>
				
Tanpa informasi ini, standar pengkodean UTF-8 atau UTF-16, tergantung pada keberadaan UNICODE byte-order mark (BOM) pada awal XML file. Jika file dimulai dengan tanda perintah byte UNICODE (0xFF 0xFE) atau (0xFE 0xFF), dokumen dianggap dalam encoding UTF-16; Jika tidak, itu adalah dalam UTF-8. The Simpan metode IXMLDOMDocument antarmuka mempertahankan penyandian asli dokumen. Default untuk metode ini adalah UTF-8.

MSXML DOM kesalahan

Dua kesalahan umum yang kembali dari metode antarmuka XML Document Object Model (DOM) adalah:
Karakter tidak sah ditemukan di konten teks.
-dan-
Beralih dari saat ini pengkodean encoding tertentu tidak didukung.
Dengan beban metode IXMLDOMDocument antarmuka, kesalahan ini biasanya terjadi di bawah kondisi berikut:
  • Pengkodean tidak ditentukan, mark perintah byte tidak ditemukan pada awal XML file dan data berisi karakter khusus encoded in UTF-16 format (such as Swedish character å, or 0xE5) rather than the default UTF-8 (0xC3 0xA5) format.
  • Pengkodean tertentu tidak cocok sebenarnya penyandian XML data.
Praktik yang baik adalah untuk selalu menentukan pengkodean benar dalam deklarasi XML, daripada menerima standar pengkodean.

Dengan MSXML parser versi 2.5, 2,5 SP1 dan 2.6, loadXML metode IXMLDOMDocument hanya dapat memuat UTF-16 atau UCS-2 dikodekan data. Setiap usaha untuk memuat data XML yang dikodekan dengan hasil format encoding yang lain dalam kesalahan berikut:
Beralih dari saat ini pengkodean encoding tertentu tidak didukung.
Dengan rilis MSXML 3.0 (Msxml3.dll), pembatasan ini dihapus, dan kode berikut berjalan tanpa kesalahan:
hr = pXMLDoc->loadXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?><tag1>Abcdef</tag1>");
				
CATATAN: XML properti IXMLDOMDocument antarmuka menulis data XML sebagai UTF-16 dikodekan tapi tanpa tanda perintah byte pada awal. Hal ini mungkin menyebabkan masalah pengkodean.

Anda juga dapat menerima kesalahan ini ketika Anda menelepon transformNode metode IXMLDOMNode antarmuka dengan XSL atau XSLT file di mana XML pengkodean informasi ditentukan sebagai berikut:
<xsl:output method="xml" encoding="UTF-8" />
				
The transformNode metode mengembalikan BSTR yang data UTF-16 dikodekan oleh definisi. Cara yang lebih baik untuk mempertahankan encoding adalah untuk memanggiltransformNodeToObject metode dan menyimpan hasil untuk streaming atau XML baru dokumen dan kemudian menyimpannya.

REFERENSI

Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
259555  (http://support.microsoft.com/kb/259555/EN-US/ ) PRB: Kesalahan terjadi ketika Anda membuka ADO Recordset di Sungai XML
Untuk men-download XML terbaru dan informasi, lihat Website Microsoft Developer Network (MSDN) berikut:
http://MSDN.Microsoft.com/XML/default.asp (http://msdn.microsoft.com/xml/default.asp)
Kata kunci: 
kbproductlink kbinfo kbmt KB275883 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:275883  (http://support.microsoft.com/kb/275883/en-us/ )