¿Podemos simplificar este código de codificación de cadena?

¿Es posible simplificar este código en una forma más limpia / más rápida?

StringBuilder builder = new StringBuilder();
var encoding = Encoding.GetEncoding(936);

// convert the text into a byte array
byte[] source = Encoding.Unicode.GetBytes(text);

// convert that byte array to the new codepage. 
byte[] converted = Encoding.Convert(Encoding.Unicode, encoding, source);

// take multi-byte characters and encode them as separate ascii characters 
foreach (byte b in converted)
    builder.Append((char)b);

// return the result
string result = builder.ToString();

En pocas palabras, toma una cadena con caracteres chinos como 鄆 y los convierte a ài.

Por ejemplo, ese carácter chino en decimal es 37126 o 0x9106 en hexadecimal.

Verhttp://unicodelookup.com/#0x9106/1

Convertidos a una matriz de bytes, obtenemos [145, 6] (145 * 256 + 6 = 37126). Cuando se codifica en CodePage 936 (chino simplificado), obtenemos [224, 105]. Si dividimos esta matriz de bytes en caracteres individuales, tenemos 224 = e0 = à y 105 = 69 = i en Unicode.

Verhttp://unicodelookup.com/#0x00e0/1 yhttp://unicodelookup.com/#0x0069/1

Por lo tanto, estamos haciendo una conversión de codificación y asegurando que todos los caracteres en nuestra cadena de salida Unicode puedan representarse utilizando a lo más dos bytes.

Actualización: Necesito esta representación final porque este es el formato que está aceptando mi impresora de recibos. ¡Me llevó una eternidad para averiguarlo! :) Como no soy un experto en codificación, estoy buscando un código más simple o más rápido, pero la salida debe seguir siendo la misma.

Actualización (versión más limpia):

return Encoding.GetEncoding("ISO-8859-1").GetString(Encoding.GetEncoding(936).GetBytes(text));

Respuestas a la pregunta(3)

Su respuesta a la pregunta