1

Foxpro(DOSベース)プログラムからエクスポートされたテキストファイルがありますが、このテキストには英語以外の文字(アラビア語[右から左])が含まれており、エクスポートされた文字列は「¤“îگüَن」のようになります。

それらを元の値に戻す方法はありますか?

4

1 に答える 1

1

適切なコードページでデータを読み取る必要があります。

public static string ReadFile(string path, int codepage)
{
    return Encoding.GetEncoding(codepage)
        .GetString(File.ReadAllBytes(path));
}

正しいコードページIDで関数を呼び出します。MS-DOSアラビア語の場合は「708」である必要があります。完全なリストについては、ウィキペディアで開始できます。

string content = ReadFile(@"c:\test.txt", 708);

サポートされていないエンコーディングから変換するためのルックアップテーブルを使用したソリューション(マッピングは、127を超える文字にのみ必要です):

public static string ReadFile(string path, byte[] translationTable, int codepage)
{
    byte[] content = File.ReadAllBytes(path);
    for (int i=0; i < content.Length; ++i)
    {
        byte value = content[i];
        if (value > 127)
            content[i] = translationTable[value - 128];
    }

    return Encoding.GetEncoding(codepage)
        .GetString(content);
}

変換テーブルの例:

インデックスオリジナル(IS)翻訳済み(1256)
..。
13141194
..。
于 2012-06-19T07:56:52.570 に答える