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.