C#:使用包含法语字符的值创建资源文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:使用包含法语字符的值创建资源文件相关的知识,希望对你有一定的参考价值。

在我的C#控制台应用程序中,使用谷歌翻译服务我以编程方式尝试将MyResources.resx文件翻译成MyResources.fr-CA.resx

这是代码:

public static string TranslateText(string input, string languagePair)
{
       string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
       WebClient webClient = new WebClient();
       webClient.Encoding = System.Text.Encoding.UTF8;
       string result = webClient.DownloadString(url);
       result = result.Substring(result.IndexOf("<span title="") + "<span title="".Length);
       result = result.Substring(result.IndexOf(">") + 1);
       result = result.Substring(0, result.IndexOf("</span>"));
       return result.Trim();
}

static void Main(string[] args)
{
   var resWriter = new ResourceWriter("Translations.resources");

   ResourceSet resourceSet = MyResources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
   foreach (DictionaryEntry entry in resourceSet)
   {
       string resKey = entry.Key.ToString();
       string resValue = entry.Value.ToString();

       var result = TranslateText(resValue, "en|fr-CA");

       if (result != null)
       {
          resWriter.AddResource(resKey, System.Web.HttpUtility.htmlDecode(result));
       }
    }

    resWriter.Close();
}

问题是一些法国人物显示为“?”生成的Resources.fr-CA.resx文件中的字符,只有当我使用System.Web.HttpUtility.HtmlDecode时,否则它会显示字符,例如“d”

那么如何以编程方式在资源文件中以编程方式正确插入基于法语的值?

答案

您必须更改webClient编码类型才能正确解码法语字符。

所以这一行:

webClient.Encoding = System.Text.Encoding.UTF8;

必须是这样的:

webClient.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");

并且您的“结果”变量(在调用TranslateText方法之后)应该可以正确地用法语读取。

请尝试这种方式告诉我,它对我有用。问候。

以上是关于C#:使用包含法语字符的值创建资源文件的主要内容,如果未能解决你的问题,请参考以下文章

Outlook 无法在我的 mailto 字符串中接受法语重音字符?

资源文件的本地化不起作用

使用法语口音时语法无效

带有法语特殊字符 (è d') 的无效 XPath

Robot Framework 资源和变量文件

严重包含在字符串中,除非我将它存储在 C++ 类中