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

高洛峰
Freigeben: 2017-02-07 11:57:28
Original
1974 Leute haben es durchsucht

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();
}
}
Nach dem Login kopieren

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("您好,北京欢迎你");
});
}
}
Nach dem Login kopieren

解决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();
}
}
Nach dem Login kopieren

解决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();
Nach dem Login kopieren

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"
}
}
},
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!