我有一个xml文件,我用这个PHP函数file_get_contents()
检索它的数据。
我的目的是为此XML文件提供一个编辑器,因此XML内容字符串将加载到textarea中,然后进行编辑(如果需要),并保存为file_put_contents()
PHP返回的字符串包含替换字符(�)。我该如何删除它或找到更好的解决方案?
我的xml文件如下所示:
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
并将其检索为:
<�?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
答案 0 :(得分:0)
我找到了一个使用此功能的解决方案(http://php.net/manual/pt_BR/function.iconv.php):
iconv("UTF-16", "UTF-8", $content);
其中$content
是从我的XML文件返回数据的字符串。
由于编码是UTF-16,只需将其转换为UTF-8,现在它可以正常工作。
谢谢。
**重要**
请记住在保存其内容时将其转换回原始编码:
iconv('UTF-8', 'UTF-16', $content);
否则,下次加载时,您最终会在应用程序中阅读中文! :)