文字列をUTF8にエンコードしています
いいえ、UTF8で文字列をエンコードすることはできません。.NETでは、すべての文字列はUnicode(UTF16)でエンコードされています。
コード例で行っているのは、文字列(常にUnicodeであることを忘れないでください)をUTF-8でエンコードされたバイト配列に変換し、それをWindows-1252
バイト配列に変換して、最後にこのバイト配列をASCIIエンコーディングを使用した文字列。
ここで何をしようとしているのかは明確ではありませんが、UTF-8からWindows-1252を通過し、最後にASCIIに変換するすべての変換を実行すると、ターゲットエンコーディングでサポートされていない文字が失われる可能性があります。
ただし、覚えておくべき最も重要なことは、エンコードは、バイト配列を前後に変換する場合にのみ意味があるということです。バイト配列がエンコードされます。
取得した壊れた文字列(encodedText
変数)を修正しようとしている場合は、この文字列を取得しているコードを修正する必要があります。一部のエンコーディングを使用して、後で壊れた文字列を修正することはできません。
アップデート:
=58=2D=54=65=73=74
これがUTF-8バイト配列のHEX表現であると想定して、対応する文字列値に解析しようとしているようです。
これを行う方法は次のとおりです。
string encodedText = "=58=2D=54=65=73=74";
encodedText = encodedText.Replace("=", string.Empty);
byte[] buffer = HexToByte(encodedText);
string text = Encoding.UTF8.GetString(buffer);
関数は次のようになりHexToByte
ます。
private static byte[] HexToByte(string hexString)
{
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}