解決ASP.NET MVC3與FusionCharts亂碼問題

程序代碼javascript

 代碼以下 複製代碼
<script type="text/ javascript">
    $(document).ready(function () {
        var myChart = new FusionCharts("/FusionCharts/FCF_MSLine.swf", "myChart1", "720", "300");
        myChart.setDataURL("/Portal/GetUserStat");
        myChart.render("charts1");
    })
</script>
解決ASP.NET MVC3與FusionCharts亂碼問題

直覺和字符編碼有關。在瀏覽器中將MVC接口數據另存爲xml文件,FusionCharts直接調用xml文件一樣是亂碼,再用UltraEdit打開xml另存爲UTF8帶BOM文件,圖表顯示正常,先後兩個xml文件:

解決ASP.NET MVC3與FusionCharts亂碼問題

爲了確保BOM不是在瀏覽器中另存爲時丟失,對http數據抓包,肯定了服務器響應時就沒有BOM:

解決ASP.NET MVC3與FusionCharts亂碼問題

如今能夠確定是由於MVC輸出的內容缺乏BOM致使亂碼,怎麼改呢?找到代碼:
 代碼以下 複製代碼
return Content(str, "text/xml", Encoding.UTF8);
修改成:
 代碼以下 複製代碼
return Content(str, "text/xml", new UTF8Encoding(true));

還是缺乏BOM亂碼,最後修改以下解決:
 代碼以下 複製代碼

 

Response.Write(Encoding.UTF8.GetString(new byte[] { 0xEF, 0xBB, 0xBF }));
return Content(str, "text/xml", Encoding.UTF8);

 

以上測試使用FusionCharts Free - ver 2.2。
 
相關文章
相關標籤/搜索