一个软件为我生成一个Windows1252XML文件,我想用PHP解析它,然后用UTF8将数据发送到我的数据库中。
我尝试了很多解决方案,比如I或utf8_encode函数,但是没有结果。
它展示的东西像€,但不只是€.
我的XML文件如下所示:
<?xml version="1.0" encodoing="Windows-1252" standalone="yes"?>
<node>The price is 12 € !</node>€似乎是Windows1252中欧元(欧元)的代码。
我尝试了这些功能:
<!doctype html>
<html lang='fr'>
<head>
<meta charset='UTF-8'>
</head>
<body>
<?php
// XML Loading in DOM Document
// Parsing XML Node
/* Not working */
$node = iconv('Windows-1252', 'UTF-8', $nodeValue);
/* Not working */
$node = utf8_encode($nodeValue);
?>
</body>
</html>发布于 2015-06-04 10:15:32
如本堆栈溢出问题所示,欧元符号被转换为拉丁文-1补充欧元字符,而不是“适当”UTF-8码点。解决这一问题的方法是utf8_decode,然后再“重新编码”:$node = iconv('Windows-1252','UTF-8',utf8_decode($node));
因此,一些可以工作的示例代码:
<?php
$xml = '<?xml version="1.0" encoding="Windows-1252" standalone="yes"?>
<node>The price is 12 € !</node>';
$doc = new DomDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagName('node');
$node = iconv('Windows-1252', 'UTF-8', utf8_decode($nodes[0]->nodeValue));
echo $node;https://stackoverflow.com/questions/30640133
复制相似问题