You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 8.0 MVC中JS文件土耳其字符编码异常如何解决?

解决ASP.NET Core 8.0 MVC中土耳其字符编码问题

问题分析

你的土耳其语特殊字符(如ı、ğ、ş)显示为乱码,核心原因是文件编码不匹配或服务器响应未指定UTF-8编码,导致浏览器无法正确解析字符。


解决方案

1. 修正脚本文件的编码格式

在Visual Studio 2022中处理有问题的脚本文件:

  • 打开目标脚本文件,点击顶部菜单栏的文件 > 高级保存选项。
  • 在「编码」下拉菜单中选择Unicode (UTF-8 带签名) - 代码页 65001,保存文件。
  • (可选)设置VS默认编码:依次点击工具 > 选项 > 文本编辑器 > 所有语言 > 常规,勾选「自动检测不带签名的UTF-8编码」,并将「默认编码」设为UTF-8,避免后续文件出现同样问题。

2. 配置ASP.NET Core的响应编码

在Program.cs中添加编码相关配置,确保服务器输出UTF-8编码的内容:

var builder = WebApplication.CreateBuilder(args);

// 配置Web编码器支持所有Unicode字符
builder.Services.Configure<WebEncoderOptions>(options =>
{
    options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
});

// 注册MVC等服务(你的现有代码)
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 配置静态文件响应头,强制指定UTF-8编码
app.UseStaticFiles(new StaticFileOptions
{
    OnPrepareResponse = ctx =>
    {
        var contentType = ctx.Context.Response.Headers.ContentType.ToString();
        if (contentType.StartsWith("text/") || contentType.EndsWith("javascript"))
        {
            ctx.Context.Response.Headers.ContentType = $"{contentType}; charset=utf-8";
        }
    }
});

// 其他中间件配置(你的现有代码)
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

3. 确保HTML页面的编码声明正确

在布局页(_Layout.cshtml)的<head>标签内添加UTF-8编码声明:

<meta charset="utf-8" />

4. 规范脚本文件的引入方式

通过<script>标签引入土耳其语配置文件时,显式指定编码:

<script src="~/js/tr-lang.js" charset="utf-8"></script>

验证方法

修改完成后,重新编译并运行项目:

  • 在浏览器开发者工具的「网络」面板中,查看脚本文件的响应头,确认Content-Type包含charset=utf-8。
  • 检查控制台输出和页面中的土耳其字符是否正常显示。

内容的提问来源于stack exchange,提问作者BK52

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:43:23