Windows Azure 微软公有云已经登陆中国有一段时间了,现在是处于试用阶段,Windows Azure的使用将会给管理信息系统的开发、运行、维护带来什么样的新体验呢?

Windows Azure平台中有网站、虚拟机、云服务、SQL数据库、存储、服务总线、网络、管理服务、活动目录等模块。

Windows Azure 微软公有云体验(一)已经对网站做了简单介绍,说到Windows Azure网站模块类似于服务器中的IIS,但是在某些方面跟我们平时使用的会有些区别的,下面谈谈Windows Azure网站模块的IIS中文编码带来的一些问题及解决方案。

饮水思源,转载勿删:http://www.cnblogs.com/evkchina/p/3469475.html,请支持关注北京易维清源代码生成软件www.evkchina.com

我们做了多次测试发现,发布到Windows Azure网站的编码方式为中文时会出现乱码问题,包括两方面:

1.在Get请求有中文参数时,使用IE11时提示502错误(使用F12调试模式中的edge、ie10、ie9、ie8和ie7同样出现此错误)

2.对于下载文件名乱码的测试结果如下,

浏览器 Debug 中文IIS7 微软云网站 http_user_agent(浏览器版本号)
IE11 正常 正常 正常 mozilla/5.0 (windows nt 6.1; wow64; trident/7.0; rv:11.0) like   gecko
IE10 正常 正常 正常 mozilla/5.0 (compatible; msie 10.0; windows nt 6.2; wow64;   trident/6.0)
IE9 正常 正常 正常 mozilla/5.0 (compatible; msie 9.0; windows nt 6.1;   trident/5.0)
搜狗高速 正常 正常 正常 mozilla/5.0 (windows nt 6.1; wow64; trident/7.0; rv:11.0; se   2.x metasr 1.0) like gecko
搜狗兼容 正常 正常 正常 mozilla/5.0 (windows nt 6.1; wow64; trident/7.0; rv:11.0; se   2.x metasr 1.0) like gecko
FireFox 正常 正常 正常 mozilla/5.0 (windows nt 6.1; wow64; rv:25.0) gecko/20100101   firefox/25.0
Google 正常 正常 正常 mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml,   like gecko) chrome/31.0.1650.63 safari/537.36
Opera 正常 正常 正常 mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml,   like gecko) chrome/31.0.1650.57 safari/537.36 opr/18.0.1284.49
safari 5 正常 正常 乱码 mozilla/5.0 (windows nt 6.1; wow64) applewebkit/534.52.7   (khtml, like gecko) version/5.1.2 safari/534.52.7
safari 7 正常 正常 乱码 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71
chrome 正常 正常 正常 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1711.3 Safari/537.36
FireFox 正常 正常 正常 Mozilla/5.0 (Macintosh; Intel   Mac OS X 10.9; rv:20.0) Gecko/20100101 Firefox/20.0

safari出现错误,文件名为乱码但是能够正常下载打开

首先,是Windows Azure的环境因素,发布到[Windows Azure网站]的所有网站都是在后台的Windows服务器上托管的,Windows操作系统和IIS都是国际统一的,英文环境。因此发布的网站最好显式地设定网站或者文件的编码方式,建议使用UTF-8编码格式。

针对Get请求有中文参数的情况,可尝试显式的指定Charset,如:xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

然后,把中文参数给Encode一下

其次,针对下载文件乱码的情况,建议修改Web.config

将globalization节点修改为<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="GB2312" culture="zh-CN" uiCulture="zh-CN" />后,发布至Windows Azure网站,除了让人揪心的火狐,IE和其他浏览器均正常通过。

3.火狐浏览器下载文件名乱码的解决方法

经过测试,火狐浏览器下载文件时,文件名使用MIME编码方式,可避免文件名出现乱码。

MIME 是“多用途网际邮件扩充协议”的缩写,使用这种编码的原因是因为 Internet 上的很多网关不能正确传输8 bit 内码的字符,比如汉字等。编码的原理就是把 8 bit 的内容转换成 7 bit 的形式以能正确传输。MIME 定义了两种编码方法Base64与QP(Quote-Printable) :

Base 64 编码把三个Byte的数据用 4 个Byte表示,这样,这四个Byte 中,每个 Byte 实际用到的都只有 6 bit。Base 64的缩写为“B”。

QP(Quote-Printable) 编码,是把一个 8 bit 的字符用两位16进制数值表示,然后在前面加“=”。QP(Quote-Printable) 编码的缩写为“Q”

下面是从服务器下载文件的实例:

string cPath = System.Web.HttpContext.Current.Server.MapPath("/我的文件.PNG");

string fileName = "我的文件.PNG"; //输出的文件

string UserAgent = context.Request.ServerVariables["http_user_agent"].ToLower();

//判断浏览器

if (UserAgent.IndexOf("firefox") < 0)

{

//不是火狐浏览器

fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);

}

else

{

//是火狐浏览器,采用 MIME 编码

fileName = "=?GB2312?B?" + Convert.ToBase64String(Encoding.Default.GetBytes(fileName)) + "?=";

}

FileStream fileStream = new FileStream(cPath, FileMode.Open, FileAccess.Read, FileShare.Read);

byte[] bytes = new byte[fileStream.Length];

fileStream.Read(bytes, 0, bytes.Length);

fileStream.Close();

context.Response.AddHeader("content-type", "application/x-msdownload");

context.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");

context.Response.AddHeader("Content-Length", count.ToString());

context.Response.BinaryWrite(bytes);

context.Response.Flush();

context.Response.End();

北京易维清源代码生成软件已完全支持与微软Azure云平台的对接,生成的源代码对各浏览器的兼容性问题已经全部解决。接下来会有更多Windows Azure 微软公有云的体验总结博文,感谢对易北京维清的关注。

Windows Azure 微软公有云体验(三) IIS中文编码解决方案的更多相关文章

  1. Windows Azure 微软公有云体验(二) 存储成本比较分析

    Windows Azure 微软公有云已经登陆中国有一段时间了,现在是处于试用阶段,Windows Azure的使用将会给管理信息系统的开发.运行.维护带来什么样的新体验呢? Windows Azur ...

  2. Windows Azure 微软公有云体验(一) 网站、SQL数据库、虚拟机

    Windows Azure 微软公有云已经登陆中国有一段时间了,现在是处于试用阶段,Windows Azure的使用将会给管理信息系统的开发.运行.维护带来什么样的新体验呢? Windows Azur ...

  3. Windows Azure系列公开课 - 第三课:创建虚拟机 (基础篇)

    Windows Azure微软智能云平台主要提供四大类服务:计算服务(Compute),数据服务 (Data Services) ,应用服务 (App Services) ,网络服务(Network) ...

  4. 微软公有云Windows Azure 2014-03-26 国内正式商用

    新浪科技讯 3月27日早间消息,微软国昨天下午宣布由世纪互联负责运营的Microsoft Azure公有云服务正式商用.这是国内首个正式商用的国际公有云服务平台.而开正式开放商用,意味着任何企业现在都 ...

  5. 微软公有云事件中心(Azure Event Hubs)在开放物联网大会(OIOT)啼声初试

     发布于 2014-12-29 作者 刘 天栋 2014年12月18日,InfoQ在京召开开放物联网大会(Open IOT Conference),微软开放技术(中国)资深项目经理陈岭在大会中针对 ...

  6. 微软公有云Azure是惠及全人类的计算资源

    回归往事,1975年,微软以DOS创业.在随后的三十年中,微软给人类贡献了视窗操作系统Windows,至今,人们对桌面操作系统XP仍然不离不弃.可是,面对互联网的兴起.微软应该怎么办呢? 微软内部不乏 ...

  7. 关于微软公有云Azure会计标准

    前几年.中国的云计算项目往往搞成了房地产项目.大搞形"象project",没有实质性的内容.云计算老总成了房地产大老板,国内业界是在胡闹! 现今,世纪互联与微软(中国)联手搞公有云 ...

  8. Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(下)

    Windows Azure中有什么? |基础结构 Windows Azure能够根据您企业的需求提供最适合的基础结构,并且在业务发展或精简时能够根据变化的需求及时的做出改变.您可以将Windows A ...

  9. Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(上)

    Windows Azure是微软的云平台,可以提供广泛服务.您可以通过它搭建.部署并管理解决方案,用于实现您可以想象的几乎任何目标.换言之,WindowsAzure是拥有无限可能的世界.无论您是需要运 ...

随机推荐

  1. 第二百七十二、三天 how can I 坚持

    昨天加班回来都很晚了,也忘了些日志了.其实感觉加班也没什么啊,一个团队在一块说说闹闹,愉快的完成工作挺好. 今天是2015年的最后一天,2015的愿望啊,只怪自己太怂了.不怂会是什么结果. 其实更应该 ...

  2. javascript !!作用

    javaScript中使用!!表示取得boolean值,具体作用如下 var value= !!test[1]; 取变量的Boolean值, 相当于 var value = test[1]?true: ...

  3. HDU 5810 Balls and Boxes (找规律)

    Balls and Boxes 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5810 Description Mr. Chopsticks is i ...

  4. POJ 2502 Subway (最短路)

    Subway 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/L Description You have just moved ...

  5. HDU 5762 Teacher Bo (暴力)

    Teacher Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...

  6. TQJson序列和还原clientdataset.data

    TQJson是QDAC开源项目的JSON对象,其特点是跨平台,功能强大. 序列 procedure TForm2.Button2Click(Sender: TObject);var AJson: TQ ...

  7. jQuery基础学习2——DOM和jQuery对象

    <body> <h3>例子</h3> <p title="选择你最喜欢的水果." >你最喜欢的水果是?</p> < ...

  8. POJ3630Phone List(字典树)

    参考http://s.acmore.net/show_article/show/58 以附上代码 #include<iostream> #include<stdio.h> #i ...

  9. cookie.js 加载顺序问题

    今天遇到一个问题,在使用cookie.js时,只有在jquery.js文件后加载整体才有效 有效加载顺序 <head> <script type="text/javascr ...

  10. [置顶] 很荣幸被选为2013年度 CSDN博客之星评选,如果觉得我的文章可以,请投我一票!

    亲爱的小伙伴们,很荣幸我被选为<2013年度CSDN博客之星候选人>,希望大家多多支持,geekguy会继续努力,为大家奉献更好的文章. 投票地址:http://vote.blog.csd ...