$ .ajax()を使用して文字列をColdFusionサーバーに送信し、そこでテーブルに保存しています。後でクエリを実行してそのデータを使用しようとすると、エラーが発生します。「nullで囲まれた例外: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メソッドを何回か問題なく使用しました。私はここで何か間違ったことをしているのですが、それをうまく処理できないようです...