繁体   English   中英

Azure WebJobs上的编码问题

[英]Encoding issue on Azure WebJobs

我遵循了Scott Hanselman 在Azure WebJobs上简介,并创建了一个小C#程序来使用它。

我的程序真的很简单(下载XML文件,对其进行解析,并使用从XML中提取的数据调用Web服务)。 问题是我注意到发生了随机错误。 看起来每当我的数据中包含包含重音符号的字符串时,Web服务调用都会静默失败。 因此,我查看了Azure WebJobs日志,并发现其中带有重音字符的内容有些奇怪。

我将代码简化到最大程度:这是我在Azure上发送并执行的程序:

using System;

namespace TestAccents
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("e é à a");
        }
    }
}

这是Azure日志上的结果: 天蓝色webjob编码问题

是的,这看起来像个错误。 我打开https://github.com/projectkudu/kudu/issues/1418进行跟踪。 您可能需要遵循该问题来跟踪分辨率。

由于该错误仍未得到纠正,因此,这是我当前使用的解决方法 (但仍在等待真正的纠正): 用相应的音符形式替换非音符字符

using System.Text;
using System.Globalization;

功能

static void ConsoleWriteLineNoDiacritics(string stIn)
{
    string stFormD = stIn.Normalize(NormalizationForm.FormD);
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < stFormD.Length; i++)
    {
        UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[i]);
        if (uc != UnicodeCategory.NonSpacingMark)
        {
            sb.Append(stFormD[i]);
        }
    }

    Console.WriteLine(sb.ToString());
}

用法

ConsoleWriteLineNoDiacritics("Test é ç à è");

结果

[12/01/2016 10:20:13 > xxxxx: INFO] Test e c a e

嗨,很晚了,但是您可以通过在开始的程序中添加以下代码行来更改输出控制台的编码:

//UTF16 was default output and Azure Console doesn't support this
             Console.OutputEncoding = Encoding.UTF8;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM