コード ページ 437 でエンコードされた ASCII 文字列を別のシステムから取得しています。これを Unicode に変換する必要があるため、他の Unicode 文字列と混在させることができます。
これは私が取り組んでいるものです:
var asciiString = "\u0094"; // 94 corresponds represents 'ö' in code page 437.
var asciiEncoding = Encoding.GetEncoding(437);
var unicodeEncoding = Encoding.Unicode;
// This is what I attempted to do but it seems not to be able to support the eight bit. Characters using the eight bit are replaced with '?' (0x3F)
var asciiBytes = asciiEncoding.GetBytes(asciiString);
// This work-around does the job, but there must be built in functionality to do this?
//var asciiBytes = asciiString.Select(c => (byte)c).ToArray();
// This piece of code happliy converts the character correctly to unicode { 0x94 } => { 0xF6, 0x0 } .
var unicodeBytes = Encoding.Convert(asciiEncoding, unicodeEncoding, asciiBytes);
var unicodeString = unicodeEncoding.GetString(unicodeBytes); // I want this to be 'ö'.
私が苦労しているのは、127 を超える文字コードの文字列をバイト配列に変換するための適切なメソッドが .NET フレームワークで見つからないことです。127 を超える文字を含むバイト配列を Unicode 文字列に変換するサポートがあるため、これは奇妙に思えます。
だから私の質問は、この変換を適切に行うための組み込みの方法はありますか、それとも私の回避策はそれを行う適切な方法ですか?