php:每当我尝试编写UTF-8时都使用DomDocument,它会写入十六进制表示法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php:每当我尝试编写UTF-8时都使用DomDocument,它会写入十六进制表示法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1145字,纯文字阅读大概需要2分钟。
内容图文
![php:每当我尝试编写UTF-8时都使用DomDocument,它会写入十六进制表示法](/upload/InfoBanner/zyjiaocheng/714/62c8bb33799c4fb6a485c7935a7b7c56.jpg)
当我尝试使用DomDocument将UTF-8字符串写入XML文件时,它实际上写入字符串的十六进制表示法而不是字符串本身.
例如:
ירושלים
而不是:???????
任何想法如何解决问题?
解决方法:
好的,你走了:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->appendChild($dom->createElement('root'));
$dom->documentElement->appendChild(new DOMText('???????'));
echo $dom->saveXml();
将正常工作,因为在这种情况下,您构造的文档将保留指定为第二个参数的编码:
<?xml version="1.0" encoding="utf-8"?>
<root>???????</root>
但是,一旦将XML加载到未指定编码的Document中,您将丢失在构造函数中声明的任何内容,这意味着:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadXml('<root/>'); // missing prolog
$dom->documentElement->appendChild(new DOMText('???????'));
echo $dom->saveXml();
将不具有utf-8的编码:
<?xml version="1.0"?>
<root>ירושלים</root>
因此,如果你加载XML,确保它是
$dom = new DOMDocument();
$dom->loadXml('<?xml version="1.0" encoding="utf-8"?><root/>');
$dom->documentElement->appendChild(new DOMText('???????'));
echo $dom->saveXml();
它将按预期工作.
作为替代方案,您还可以在加载文档后使用specify the encoding.
内容总结
以上是互联网集市为您收集整理的php:每当我尝试编写UTF-8时都使用DomDocument,它会写入十六进制表示法全部内容,希望文章能够帮你解决php:每当我尝试编写UTF-8时都使用DomDocument,它会写入十六进制表示法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。