.NET Core GB2312 error de codificación en el uso de

Traslado desde  https://www.cnblogs.com/chr-wonder/p/8464204.html

------------------------------

Descripción del error

medio ambiente

  • 2.1.4 dotnet

fenómeno

Cuando se utiliza en el código

System.Text.Encoding.GetEncoding("GB2312")
//或者
System.Text.Encoding.GetEncoding("GBK")

Se producirá una excepción:

Excepción no controlada: System.ArgumentException: 'GB2312' no es un nombre de codificación compatible. Para obtener información sobre la definición de una codificación personalizada, consulte la documentación para el método Encoding.RegisterProvider.

o

Excepción no controlada: System.ArgumentException: 'GBK' no es un nombre de codificación compatible. Para obtener información sobre la definición de una codificación personalizada, consulte la documentación para el método Encoding.RegisterProvider.

resolver

razón

Compruebe soporte utilizando el siguiente código de codificación:

System.Text.Encoding.GetEncodings();

No se han encontrado obtiene codifica GB2312 o GBK.

soluciones

El primer paso

Añadir los siguientes paquetes para el proyecto:

System.Text.Encoding.CodePages

Según  System.Text.Encoding.CodePages NuGet página de inicio  descrita, este paquete ofrece Windows 1252, Shift-JIS, y GB2312 tres de codificación para el programa.

Proporciona soporte para codificaciones basadas en código de la página, incluyendo Windows-1252, Shift-JIS y GB2312.

Así, después de importar este paquete, vamos a ser capaces de utilizar codificación GB2312.

En el  .csproj documento se debe añadir el siguiente código:

  <ItemGroup>
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
  </ItemGroup>

O ejecutar el comando siguiente en el directorio del proyecto:

dotnet add package System.Text.Encoding.CodePages --version 4.4.0

Por supuesto, la necesidad de modificar su propia versión hasta la fecha. En este momento (02/22/2018) La última versión es la 4.4.0.

No se olvide de realizar  dotnet restore .

El segundo paso

De acuerdo a un error, tenemos que utilizar referencias codificadas  Encoding.RegisterProvider para registrar funciones.

En uso  System.Text.Encoding.GetEncoding ("GB2312") antes de la ejecución en el código:

System.Text.Encoding.RegisterProvider (System.Text.CodePagesEncodingProvider.Instance);

Después de registrarse, codificación GB2312 objeto no obtendrá el error, y puede funcionar normalmente usarlos.

otras cuestiones

Hasta ahora hemos resuelto la cuestión de GB2312 codificación. Sin embargo, el programa todavía no se puede utilizar GBK codificación. Resolver el problema para GBK datos codificados todavía existe.

Publicados 131 artículos originales · ganado elogios 22 · vistas 120 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_38890412/article/details/104719804
Recomendado
Clasificación