サードパーティのアプリから受け取った文字列があり、Windows SurfaceでC#を使用して任意の言語で正しく表示したいのですが。
エンコーディングが正しくないため、私の文字列の一部はスペイン語では次のようになります。
Acción
これは次のようになります。
アクシオン
この質問の回答によると: C#で文字列エンコーディングを知る方法、受け取っているエンコーディングはすでにUTF-8で提供されているはずですが、Encoding.Default(おそらくANSI?)で読み取られます。
この文字列を実際のUTF-8に変換しようとしていますが、問題の1つは、Encodingクラスのサブセットしか表示できない(UTF8およびUnicodeプロパティのみ)ことです。これは、おそらくWindowsサーフェスAPIに制限されているためです。
私はインターネットで見つけたスニペットをいくつか試しましたが、東部の言語(つまり、韓国語)でこれまでに成功したと証明されたものはありません。一例は次のとおりです。
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
また、文字列をバイト配列に抽出してから、UTF8.GetStringを使用してみました。
byte[] myByteArray = new byte[myString.Length];
for (int ix = 0; ix < myString.Length; ++ix)
{
char ch = myString[ix];
myByteArray[ix] = (byte) ch;
}
myString = Encoding.UTF8.GetString(myByteArray, 0, myString.Length);
私が試すことができる他のアイデアはありますか?
Encoding.Default
ますが、システムのANSIコードページを返します。