我使用“accept-charset ='utf-8'”将SVG数据发布到操作页面。在操作页面上,我将该数据插入表中。稍后,在另一个页面中,我从表中查询该数据并通过Batik运行它以将其转码为PNG文件。效果很好。
<form action="test_action.cfm" method="post" target="_blank" accept-charset="utf-8">
如果我从表单标记中删除accept-charset =“utf-8”,那么稍后(在转码页面上)我得到“3字节UTF-8序列的无效字节2”错误(当尝试转码时)。
此外,我尝试使用jQuery的.ajax()尝试在后台处理操作页面时,我得到了同样的错误。使用'accept-charset =“utf-8”'使一切正常。
尝试使用$ .ajax()将SVG发送到后台的操作页面:
var lclSVG = $('#myDiv')[0].innerHTML;
$.ajax({
url: "myAction.cfm",
type: "POST",
data: ({myInfo: lclSVG}),
});
是否有某种方法可以通过$ .ajax()发布此数据,同时强制.ajax()执行类似'accept-charset =“utf-8”'的操作?
答案 0 :(得分:0)
根据JQuery ajax() docs,默认值已经是UTF-8。但是,根据这些文档,可能尝试使用contentType
选项来设置设置。您可能还需要查看processData
选项,因为它特别提到了XML处理。
我同意您的分析,但是您确认在上传过程中发生了损坏,或者您的转码(more details against this question)发生了一些问题:或许某些事情正在运行 >普通文件上传和AJAX上传之间有什么不同?
为了消除这种情况,而不是直接处理转码,可能只是将数据写入SVG并在尝试转码之前对其进行测试(我的意思是作为故障排除步骤)。
通过使用Firebug查看发送文件的服务器的请求,您可能会得到更多有关正在发生的事情的提示:比较这两种方法并寻找差异。
不是一个明确的答案,我担心,但也许有些东西要看。