using System.Text;
namespace Sunfish;
/// <summary>Juegos de caracteres antiguos (CP437, MacRoman...) a traves de CodePagesEncodingProvider.</summary>
public static class Encodings
{
// Los inicializadores estaticos se ejecutan en orden: el proveedor se registra antes de pedir nada.
private static readonly bool Registered = Register();
/// <summary>CP437 que falla si un caracter no se puede representar.</summary>
public static Encoding Cp437Strict { get; } =
Encoding.GetEncoding(437, EncoderFallback.ExceptionFallback, DecoderFallback.ReplacementFallback);
/// <summary>MacRoman (nombres de fichero de Mac clasico); lo no representable pasa a '_'.</summary>
public static Encoding MacRoman { get; } =
Encoding.GetEncoding(10000, new EncoderReplacementFallback("_"), new DecoderReplacementFallback("_"));
private static bool Register()
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
return true;
}
/// <summary>Asegura el registro del proveedor (para quien use Encoding.GetEncoding directamente).</summary>
public static bool EnsureRegistered() => Registered;
}