php 输入类型错误,错误:“输入的UTF-8输入不正确,表示编码!” 使用PHP的simplexml_load_string...

小编典典

您的0xED 0x6E 0x2C

0x20字节对应于ISO-8859-1中的“ín”,因此您的内容似乎在ISO-8859-1中,而不是UTF-8。告诉您的数据提供商并请他们修复它,因为如果它对您不起作用,那么对其他人也可能不起作用。

现在有几种解决方法,只有 在无法正常加载XML

时才应使用。其中之一将是使用utf8_encode()。不利之处在于,如果该XML同时包含有效的UTF-8和某些ISO-8859-1,则结果将包含mojibake。或者,您可以尝试使用iconv()或mbstring

将字符串从UTF-8转换为UTF-8 ,希望他们会为您解决。(它们不会,但是您至少可以忽略无效字符,以便可以加载XML)

或者,您可以走很长的路,自己验证/修复序列。这将需要一段时间,具体取决于您对UTF-8的熟悉程度。也许有图书馆可以做到这一点,尽管我什么都不知道。

无论哪种方式,都请通知数据提供者他们正在发送无效数据,以便他们可以对其进行修复。

这是部分修复。它绝对不会修复所有问题,但会修复其中的一些问题。希望您能满意为止,直到您的提供者修复他们的东西为止。

function fix_latin1_mangled_with_utf8_maybe_hopefully_most_of_the_time($str)

{

return preg_replace_callback('#[\\xA1-\\xFF](?![\\x80-\\xBF]{2,})#', 'utf8_encode_callback', $str);

}

function utf8_encode_callback($m)

{

return utf8_encode($m[0]);

}

2020-05-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值