挪威特殊字符显示不正确

时间:2018-09-08 04:56:23

标签: c# razor asp.net-core-localization

我开发了一个简单的应用程序,该应用程序使用便携式对象将单词从英语翻译为挪威语。

编号(便携式对象)

tk-WARNING **: Negative content height ...

Startup.cs

msgid "Hello world!"
msgstr "Hei Verden!"

msgid "Date Of Birth"
msgstr "Fødselsdato"

查看

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });


    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
        .AddViewLocalization();

    services.AddPortableObjectLocalization();

    services.Configure<RequestLocalizationOptions>(
        opts =>
        {
            var supportedCultures = new List<CultureInfo>
            {
        new CultureInfo("en-US"),
        new CultureInfo("en"),
        new CultureInfo("fr-FR"),
        new CultureInfo("fr"),
        new CultureInfo("no"),
        new CultureInfo("nb-NO"),
            };

            opts.DefaultRequestCulture = new RequestCulture("en-US");
            opts.SupportedCultures = supportedCultures;
            opts.SupportedUICultures = supportedCultures;
        });
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseRequestLocalization();
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

实际输出

enter image description here

如上图所示,

Fdslsdato编码不正确。我不知道背后的原因是什么。如果我错过了代码中的任何内容,请建议我达到我的期望。

预期输出应为Fødselsdato

谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。为了运行显示国际语言字符,我们需要检查文件是否为 UTF-8 格式。默认情况下,它将为 ANSI 格式。我们需要使用任何文本编辑器将其从 ANSI 转换为 UTF-8 。我将展示如何修复它。

Notepad ++ 中打开包含本地化文本的可移植对象(po)文件,然后转到编码标签并检查格式。如果不是 UTF-8 格式,则将其转换为 UTF-8 ,如下所示。

enter image description here

保存文件并运行应用程序,您将看到所有字符在浏览器中都能完美显示。