我通常可以通过在互联网上搜索自己找到问题的答案,但对于这个问题我不再有任何想法......
我通过php exec命令将内容添加到XML文件(几个Go)。 我必须这样做,因为我需要一个XML来导入我的Solr Collection中的数据
var url = "idcplg?IdcService=AJAX_SERVICE&Id=" + Id;
$.getJSON(escapeCachingForUrl(url), function(data){
for(var i=0;i<data.length;i++){
alert("1");
//some code written
myMethod(data,function(result){
alert("2");
// Need to operate on result
});
alert("4");
}
alert("5");
});
function myMethod(data,callback){
var url = "idcplg?IdcService=AJAX_ANOTHER_SERVICE";
$.getJSON(escapeCachingForUrl(url), {
data : data
}, function(data){
alert("3");
callback(data);
});
}
奇怪的是,如果我“手动”运行输出,我的XML有效...... 但不知何故,当我通过php执行它时,它会插入一些特殊字符(无效字符)。
例如:\ b在黑色背景上插入“BS”(在Notepad ++中)
我已经尝试过了: htmlspecialchars(addSlashes('\ b'),ENT_XML1)
请帮助:)
编辑:只需添加一个“\”是这个特定'\ b'字符的解决方案,但我希望有一个通用的解决方案:例如:$ txt =“(\ b€.......或d≥3”;
在Notepad ++中显示如下:
(\bâ¬.......或dâ¥3
注意:我觉得这是一个编码问题...(当我将编码更改为UTF8时,它显示得很好)
答案 0 :(得分:1)
您想在xml中添加文字\
和b
字符吗?由于您使用的是"
- 引用字符串,因此\b
被视为退格。你必须双重逃脱:
$cmd = "echo '\\b' > /windowsShare/solr_update_20150728.xml";
^^
您可以切换为使用'
引用的字符串,其中\b
没有特殊含义,但您还必须转义回显引号:
$cmd = 'echo \'\b\' > /windowsShare/solr_update_20150728.xml';
答案 1 :(得分:0)
正如我在编辑中所说,这是一个编码问题。 我正在插入&#39;&lt; ?xml version =&#34; 1.0&#34;编码=&#34; ISO-8859-1&#34; ?&GT;&#39;到XML。
因此SQL数据(UTF-8)正在转换为另一种格式。 现在,我插入&lt; ?xml version =&#34; 1.0&#34;编码=&#34; UTF-8&#34; ?&GT;
XML和SQL数据都是一样的。