Heim  >  Artikel  >  Backend-Entwicklung  >  Lösen Sie das Problem verstümmelter Zeichen im asp.net-Kern bei der Ausgabe von Chinesisch

Lösen Sie das Problem verstümmelter Zeichen im asp.net-Kern bei der Ausgabe von Chinesisch

高洛峰
高洛峰Original
2017-02-07 11:57:281993Durchsuche

Vorwort

Als .NET-Webentwickler ist es für mich am traurigsten, wenn ich während der Projektentwicklung und -bereitstellung mit der schlechten Lösung auf Windows Server konfrontiert werde. Es ist auch das Artefakt Nginx, aber Nginx unter Win Immer minderwertig. Unter Linux könnte man sagen: „Warum nicht das mit Windows gelieferte NLB verwenden? gleiche Lade- und Cache-Technologie? Lösungen übernehmen, die unter Linux bereits ausgereift sind? Es ist gut, eine geeignete Lösung zu finden, wenn es keinen anderen Weg gibt. Natürlich sollte man die beste Lösung wählen, wenn es einen Weg gibt.

Glücklicherweise ist .ASP.NET Core erschienen. Es entspricht dem Open-Source-Trend, beseitigt den kritisierten Win-Server und erscheint vor uns als plattformübergreifende Version von ASP. NETTO. Unabhängig von den langweiligen Leistungsvergleichen im Benchmark oder davon, ob wir in Zukunft mit JAVA- und PHP-Webanwendungen konkurrieren können, haben wir zumindest für uns Entwickler von .NET-Plattformen eine weitere Entwicklungsrichtung und ein weiteres innovatives und ausgereiftes Unterfangen Gelegenheiten. Im Folgenden wird nicht viel gesagt. In diesem Artikel wird hauptsächlich auf das Problem verstümmelter Zeichen eingegangen, wenn der asp.net-Kern Chinesisch ausgibt.

Reproduktion des Problems

Erstellen Sie eine neue Konsole und Site

public class Program
{
public static void Main(string[] args)
{ 
Console.WriteLine("您好,北京欢迎你");
Console.Read();
}
}

Site

public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
}
 
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
 
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
 
app.Run(async (context) =>
{
await context.Response.WriteAsync("您好,北京欢迎你");
});
}
}

解决asp.net core在输出中文时乱码的问题

Was wäre, wenn wir die Kodierung „GB2312“ erhalten und diese dann kodieren?

public static void Main(string[] args)
{
Console.WriteLine("您好,北京欢迎你");
try
{
Console.WriteLine(Encoding.GetEncoding("GB2312"));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
}

解决asp.net core在输出中文时乱码的问题

'GB2312' ist kein unterstützter Codierungsname. Informationen zum Definieren einer benutzerdefinierten Codierung finden Sie in der Dokumentation für den Encoding.RegisterProvider Methode.
Parametername: Name

Das Obige bedeutet wahrscheinlich, dass Encoding die GB2312-Codierung nicht unterstützt und Sie die Methode Encoding.RegisterProvider verwenden müssen, um den Anbieter zu registrieren.

try
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncoding("GB2312"));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();

CodePagesEncodingProvider ist im Paket System.Text.Encoding.CodePages

"System.Text.Encoding.CodePages/4.0.1": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"System.Collections": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.Reflection": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.Handles": "4.0.1",
"System.Runtime.InteropServices": "4.1.0",
"System.Text.Encoding": "4.0.11",
"System.Threading": "4.0.11"
},
"compile": {
"ref/netstandard1.3/System.Text.Encoding.CodePages.dll": {}
},
"runtimeTargets": {
"runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": {
"assetType": "runtime",
"rid": "unix"
},
"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},

Okay, Lassen Sie uns den Code ändern, uns zuerst registrieren und dann Chinesisch ausgeben

try
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncoding("GB2312"));
Console.WriteLine("您好,北京欢迎你");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

Zusammenfassung

Wenn Sie also Chinesisch auf der Seite oder auf der Konsole ausgeben, sollten Sie bezahlen Achtung Registrieren Sie den Anbieter. Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels für das Studium oder die Arbeit von Nutzen sein kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen.

Weitere verwandte Artikel zur Lösung des Problems verstümmelter Zeichen im asp.net-Kern bei der Ausgabe von Chinesisch finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn