首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP上传到服务器前将编码更改为XML?

如何在PHP上传到服务器前将编码更改为XML?
EN

Stack Overflow用户
提问于 2017-03-10 02:34:27
回答 2查看 75关注 0票数 1

我有一个文件,我用它来上传XML文件到我的网络服务器使用PHP,但我有一些XML文件的问题,我想改变它的编码从utf-8ISO-8859-1之前,上传该文件,这是可能的一个原生的php函数,或我需要从头开始呢?

我的意思是在上传之前读取文件,也许用str_replace修改那部分,然后保存文件?

这是我代码的一部分

代码语言:javascript
复制
if (move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])) {

    $xml = simplexml_load_file($upload_dir.$pic['name']);

应该在if语句之前,你觉得呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-11 07:39:40

我为其他有同样问题的人解决了这个问题,我的问题是,我有一个可以上传XML文件的应用程序,这些文件的编码是utf-8,但由于某种原因,有些文件的格式不正确,因为编码不是utf-8,而是ISO-8859-1,所以当我尝试上传损坏XML时,javascript函数返回类似"parsererror" "SyntaxError: Unexpected token < in JSON at position 0 blabla的警告,所以我这样做了。

代码语言:javascript
复制
if (move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])) {


    $xml = @simplexml_load_file($upload_dir.$pic['name']);


    if ($xml === false) {


        $data = file_get_contents($upload_dir.$pic['name']);
        $data = utf8_encode($data);

        file_put_contents($upload_dir.$pic['name'], $data);


        $xml = simplexml_load_file($upload_dir.$pic['name']);
    }

我取消了simplexml_load_file函数的警告,也许不是最好的方法,但对我来说,这是我的解决方案,之后我获取xml文件的内容并将其转换为utf-8,然后将内容放回文件中,现在我可以正确地获取数据以执行所需的操作

票数 0
EN

Stack Overflow用户

发布于 2017-03-10 17:36:21

您不能在上传之前更改文件,只有在获得副本后才能更改。

XML文件在XML声明中包含其编码。有了这些信息,XML解析器就可以对其进行解码。SimpleXML和其他PHP XML都使用UTF-8。任何属性或方法都将返回UTF-8字符串。

唯一的例外是像asXml()这样的序列化方法。将使用为文档定义的编码。

所以这里并没有真正的将其转换为ISO-8859-1,加载到SimpleXML中只是将其转换回来。转换的两个可能的结果是,您将丢失ISO-8859-1中没有的字符,或者您中断了XML。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42702959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档