我正在使用$.ajax()将字符串发送到coldfusion服务器,并将其存储在表中.当我稍后查询并尝试使用该数据时,我收到错误; “null Enclosed Exception:3字节UTF-8序列的字节2无效”.
首先,我从DOM中获取SVG并将其发送到操作页面.它应该只是一个字符串,对吗?
var lclSVG = $('#myDiv')[0].innerHTML; // SVG Code (XML?) $.ajax({ url: "myAction.cfm",type: "POST",data: ({myInfo: lclSVG}),});
在myAction.cfm页面上,我将数据更新为表格.
<CFQUERY NAME="postSVG"> UPDATE myTable SET svg = '#form.myInfo#' WHERE ID = 1 </CFQUERY>
SVG2PNG.cfm:当我尝试查询并使用svg数据时,我收到错误“3字节UTF-8序列的无效字节2”.错误发生在.transcode行上.
<CFQUERY NAME="getSVG"> SELECT svg FROM myTable WHERE ordID = 1 </CFQUERY> <cfset svg = getSVG.svg> <cfscript> transcoder = createObject("java","org.apache.batik.transcoder.image.PNGTranscoder").init(); inputStream = createObject("java","java.io.StringBufferInputStream").init(svg); input = createObject("java","org.apache.batik.transcoder.TranscoderInput").init(inputStream); OutFile = expandPath("myTest2.png"); outputStream=CreateObject("java","java.io.FileOutputStream").init(OutFile); output=CreateObject("java","org.apache.batik.transcoder.TranscoderOutput").init(outputStream); transcoder.transcode(input,output); outputStream.close(); </cfscript>
我已经多次使用jQuery的ajax方法而没有太大困难.我在这里做错了,我似乎无法掌握它……
解决方法
我没有使用过您使用过的框架,但是设置svg变量的行应该使用getSVG查询吗?
<cfset svg = getSVG.svg>