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. MUSIC算法学习笔记

    MUSIC即多重信号分类. MUSIC算法仅能估计非相干关信源,对相干信源,其性能将随信源间的相 关系数的增加而逐渐降低,直至完全恶化. 阵列信号处理的只要问题包括:波束形成技术,零点形成技术,空间谱 ...

  2. nodejs + socket.io + redis 新手上路

    最近要更新网站架构了,决定转入 nodejs + socket.io + redis 方式. 战斗刚开始: 网上的文章太松散,我根据各个网友的分享进行整理 ,让大家可以方便上手. 进入node.js之 ...

  3. [iOS 多线程 & 网络 - 2.1] - 解析json

    A.iOS中json的基本使用 1.解析json数据 (1)json反序列化 对象{}格式 {key : value, key : value,...} 的键值对的结构可以反序列化为OC中的NSDic ...

  4. threading模块

    threading — Higher-level threading interface¶ Source code: Lib/threading.py This module constructs h ...

  5. 经典代码-C宏 #转字符串【瓦特芯 笔记】

    在调试C语言程序时,有时需要打印宏的名字.可以通过定义宏,宏名字的数组来获得. 例如: #include <stdio.h> #define MACRO_STR(x) {x, #x} ty ...

  6. 【Linux常用工具】02. 创建启动定时任务工具cron

    一. cron 1. cron是一个守护程序,它提供定时器的功能,让用户在特定的时间得以执行默认的指令或程序.只要用户会编辑定时器的设置文件,就可以使用定时器的功能. 定时器文件格式: 2. cron ...

  7. Unity3D行为树插件Behave学习笔记

    Behave1.4行为树插件 下载地址:http://pan.baidu.com/s/1i4uuX0L 安装插件和使用 我们先来看看插件的安装和基本使用方法,新建一个Unity3D项目,这里我使用的是 ...

  8. CoordinatorLayout的简单应用(材料设计新控件)

    CoordinatorLayout字面意思为:协调布局,一般作为根布局使用.关于这个布局,记录一下两个用法,备忘. 一.配合 FloatingActionBar 使用 <?xml version ...

  9. MVC3 Razor模板引擎

    http://blog.csdn.net/tiz198183/article/details/8659362 一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母 ...

  10. Jquery EasyUi实战教程布局篇

    转自:http://www.kwstu.com/ArticleView/kwstu_20139413501290 送给大家一个非常好的后台布局模板,本人后来就选择了这个模板http://www.kws ...