サード パーティのアプリから受け取った文字列があり、Windows Surface で C# を使用して任意の言語で正しく表示したいと考えています。
エンコーディングが正しくないため、文字列の一部はスペイン語で次のようになります。
アクション
一方、次のようになります。
アクション
この質問に対する回答によると: How to know string encoding in C#、受信しているエンコーディングは既に UTF-8 に対応しているはずですが、Encoding.Default (おそらく ANSI?) で読み取られます。
この文字列を実際の UTF-8 に変換しようとしていますが、問題の 1 つは、おそらく Windows サーフェス API に制限されているため、Encoding クラスのサブセット (UTF8 および Unicode プロパティのみ) しか表示できないことです。
インターネットで見つけたいくつかのスニペットを試してみましたが、東洋の言語 (つまり韓国語) ではこれまで成功したものはありませんでした。一例を以下に示します。
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);
私が試すことができる他のアイデアはありますか?