Saya memiliki teks yang tidak dapat dikonversi ke rangkaian karakter windows-1251. Sebagai contoh:

中华全国工商业联合会-HelloWorld

Saya memiliki metode untuk mengonversi dari UTF8 ke windows-1251:

static string ChangeEncoding(string text)
{
    if (text == null || text == "")
        return "";
    Encoding win1251 = Encoding.GetEncoding("windows-1251");
    Encoding ascii = Encoding.UTF8;
    byte[] utfBytes = ascii.GetBytes(text);
    byte[] isoBytes = Encoding.Convert(ascii, win1251, utfBytes);
    return win1251.GetString(isoBytes);
}

Sekarang mengembalikan ini:

??????????-HelloWorld

Saya tidak ingin menampilkan karakter yang tidak dikonversi ke rangkaian karakter windows1251 dengan benar. Dalam hal ini saya hanya ingin:

-HelloWorld

Bagaimana saya bisa melakukan ini?

0
Dilshod K 9 Mei 2021, 19:42

1 menjawab

Jawaban Terbaik

Menurut saran @JeroenMostert metode ini membantu saya:

    public static string ChangeEncoding(string text)
    {
        Encoding win1251 = Encoding.GetEncoding("windows-1251", new EncoderReplacementFallback(string.Empty), new DecoderExceptionFallback());
        return win1251.GetString(Encoding.Convert(Encoding.UTF8, win1251, Encoding.UTF8.GetBytes(text)));
    }
0
Dilshod K 9 Mei 2021, 17:01