php xml特殊字符处理,php – 使用特殊字符解析XML(UTF-8)

博客内容涉及PHP在处理XML时遇到的编码问题,即特殊字符如'i'在使用simplexml_load_string解析后变为不可识别的字符。解决方法是通过iconv函数将UTF-8编码的XML字符串转换为ISO-8859-1或其他适用的编码,以确保正确显示和存储。此问题可能影响到文件保存和数据库交互。
摘要由CSDN通过智能技术生成

我开始使用一些看起来像这样的XML(简化):

但是在我使用simplexml_load_string解析它后,特殊字符(i)变为:Ã-这显然是非常糟糕的.

有没有办法防止这种情况发生?

我知道XML很好,当保存为.txt并在浏览器中查看时,字符很好.当我在XML上使用simplexml_load_string然后将值保存为文本文件或数据库时,它会被破坏.

解决方法:

这看起来SimpleXML正在创建一个UTF-8字符串,然后在ISO-8859-1(latin-1)或类似CP-1252的东西中呈现.

将结果保存到文件并通过Web服务器提供该文件时,浏览器将使用文件中声明的编码.

包括在网页中

由于您的网页编码不是UTF-8,因此您需要将字符串转换为您正在使用的编码,例如ISO-8859-1(latin-1).

这可以通过iconv()轻松完成:

$xmlout = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $xmlout);

保存到数据库

您的数据库列未使用UTF-8排序规则,因此您应使用iconv将字符串转换为数据库使用的字符集.

假设您的数据库排序规则与您呈现的编码相同,则从数据库读取时不必执行任何操作.

说明

在UTF-8中,0xc2前缀字节用于访问“Latin-1 Supplement”块的上半部分,其中包括重音字母,货币符号,分数,上标2和3,版权和注册商标符号等字符,和不间断的空间.

但是在ISO-8859-1中,字节0xC2代表Â.所以当你的UTF-8字符串被误解为其中之一时,你会得到一些其他无意义的字符.

标签:php,encoding,xml,utf-8

来源: https://codeday.me/bug/20190607/1191449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值