+1  A: 

I'm not a PHP expert, but for the first two:

  • saveHTML() will use entities available in HTML, of which © is one
  • saveXML() will use hex encodings since the HTML entities won't be available

For the third, the documentation says that if you provide a node then the given node is written without an XML declaration (i.e. as a document fragment). I can only guess that in that case it decides to assume a UTF-8 encoding. This behavior is not apparent from the documentation.

Jim Garrison