【php】读取xml乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【php】读取xml乱码相关的知识,希望对你有一定的参考价值。

<?xml version="1.0" encoding="gb2312"?>
<msg>
<E600>未知错误</E600>
<E601>验证码输入错误</E601>
<E602>此用户名已被注册</E602>
<E603>抱歉,由于系统原因,账户注册失败</E603>
<E604>登录失败:用户名或密码错误</E604>
<E605>您要浏览的帖子不存在</E605>
<E606>您要浏览的贴吧不存在</E606>
<E607>您已经申请了会员</E607>
<E608>抱歉,收件人没有找到</E608>
<E609>对不起,您没有登录,无权限进行该操作</E609>
<E610>收件人列表中有重复</E610>
<E611>对不起,您没有权限进行该操作</E611>
</msg>

<?php
session_start();
$ErrorID=$_SESSION["iError"]; # 错误代码
if ($ErrorID=="")
$ErrorID="E600";


$xml=simplexml_load_file("Xml/Error.xml");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>错误</title>
<link href="CSS/Text.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div>
<table width="100%" border="0">
<tr>
<td align="center"><form id="form1" name="form1" method="post" action="">
<table width="80%" border="1">
<tr>
<td height="21" align="center" bgcolor="#999999" class="Text1"><b>错误</b></td>
</tr>
<tr>
<td height="140" align="center" class="Text1"><?php echo $xml->$ErrorID; ?></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>

为何会乱码

参考技术A 乱码,一般都是编码不统一,在读取后;尽量进行编码转换:

用的函数是:mb_convert_encoding

1、把 GBK 编码字串转换成 UTF-8 编码字串

Php代码
<?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("你是我的好朋友", "UTF-8", "GBK");
?>

<?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("你是我的好朋友", "UTF-8", "GBK");
?>

2、把 UTF-8 编码字串转换成 GB2312 编码字串

Php代码
// 注意将此文件存盘成 utf-8 编码格式文件再测试
<?php
header("content-Type: text/html; charset=gb2312");
echo mb_convert_encoding("你是我的好朋友", "gb312", "utf-8");
?>

// 注意将此文件存盘成 utf-8 编码格式文件再测试
<?php
header("content-Type: text/html; charset=gb2312");
echo mb_convert_encoding("你是我的好朋友", "gb312", "utf-8");
?>本回答被提问者采纳
参考技术B 在你的PHP 文件头,加上

header("content-Type: text/html; charset=gb2312");

试试

PHP学习笔记:用php读取xml文件

  xml已经被json逐渐替代,现在用的api都是用貌似用的json,但是有些老的网站还是在用xml。

  这里默认xml文件为:address.xml,存放在和读取的php文件相同级别目录,xml内容如下:

 

<?xml version="1.0" encoding="utf-8"?>
<note>
    <name>简庆旺</name>
    <address>福建省漳州市南靖县梅林镇官洋村</address>
    <tel>17095921320</tel>
    <code>363609</code>
    <school>
        <highschool>
            <name>永定一中</name>
            <address>福建省龙岩市永定区91路</address>
        </highschool>
        <university>
            <name>吉首大学</name>
            <address>湖南省吉首市人民南路120号</address>
        </university>
    </school>

</note>

 

xml读取方式一:

<?php

$xml = simplexml_load_file(‘address.xml‘);
//输出下,内容是个对象
var_dump($xml);
echo ("<br/>");
//读取到简庆旺
echo $xml->name;
echo ("<br/>");
//读取到永定一中
echo $xml->school->highschool->name;
?>

技术分享

 xml读取方式二:

 

以上是关于【php】读取xml乱码的主要内容,如果未能解决你的问题,请参考以下文章

PHP学习笔记:用php读取xml文件

PHP读取XML文件数据

PHP如何读取xml文件?

java如何读取XML配置文件

如何使用php从url读取xml文件

PHP 用PHP读取XML