Flex乱码问题,后台C#
1.前端采用Flex做的表现,后端采用C#开发,之间用Ajax+Json方式进行数据交互。
2.在Chrome上显示没问题,在QQ浏览器上显示就是乱码。
3.通过百度大概了解到是字符集不匹配,网上很多解决方法都是说在Flex代码中增加:System.useCodePage=true,经过各种测试,发现无用。
System.useCodePage=true
4.又有人指出在包含Flex运行的主页面上html头部增加utf8字符集,经过测试,发现还是无用。
<meta http-equiv="Content-Type" content="text/html"; charset="uft-8">
5.后来找到一篇文章说在Flex界面中所有的控件指定字体 ,如:宋体。经过测试这样可以解决Flex显示界面乱码的问题,但是有两个问题,第一:设置工作量大,第二:通过Ajax和后台交互的数据中含有中文显示还是乱码。
6.在网上基本就只能找到这些解决方法,后来静下心来仔细分析最终解决了该问题。
-----------------------------------------------------------------------------------------------------------
最终解决办法:
1:Flex的as源码第一句话就表明了Flex内部使用utf8字符集,因此必须保证C#后台返回来的数据也是utf8字符集,根本不用设置:System.useCodePage=true
2:Flex中定义页面全局字体样式,这样就保证了控件的字体不乱码
global { fontFamily:"微软雅黑"; }
3:在C#后台返回Json字符串时,增加ContentType的类型,该类型中指定字符集为utf8,最终解决Json中文数据显示正常
context.Response.ContentType = "application/x-json;charset=UTF-8"; context.Response.Write(strJsonData); context.Response.End();