如何从文件中读取此文本

时间:2011-05-22 04:23:11

标签: c# encoding character-encoding

如何阅读以下文字?

  

‰‰ #îõ'þüŠê'¯õù,†ƒ - # ª÷'þ'“'   ª“îù)øþ|ùý¤ª-ùýî'õ•þø-¤(#•¢¢¢   ø¤÷¢ùê'¯õùîõ'þü#^ a-ú¤ ^ b•|øû÷¢ð'ö   ¤ ù¢÷÷©^cƒ #,€ «。:õ¬ø¤Š   >¢上#...... I / S ... /   ...€... S} {TKハ^#†/“€€#} {BF#ª”îùû'ý   î'õ•þø-¤ý#ª“îùû'ýî'õ•þø-¤ý -   ¥õøöû“#^ C

我使用此代码但不显示所有字符

FileStream fs = new FileStream(open.FileName, FileMode.Open, FileAccess.Read);
        System.Text.Encoding enc = System.Text.Encoding.UTF8 ;
        byte[] data = new byte[fs.Length];
        fs.Read(data, 0, data.Length);
        string text = enc.GetString(data);

并显示文字:

  

•••#îÃμâ 〜üüŠ  Ãªâ€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   ““Õâùý   Â¤ªªÃ¼Ã½ÃÃâ€â€¢Ã¢Ã•¤¤(#†   ¢¢¢Ã¢Ã¢Ã¢Ã¢Ã¢Ã¢〜Ã〜ÃÃÃù   Ã®Ãμâ€~þü#^ AA€”ú¤Âö   ^ bâ€|Ã|Ãâââ〜ÃÂÂÂÂÂù¹   Â¢¢Â^ ^ c c c “«Â«   ÃμÂÂø¤Å€ÃÃÃ╆  â€¢/â€â€¢}传统知识{@ a†††Æ' #†  /“•“BI{{ª“Ãáùûâ€〜†  Ã®â€~Ãμ•€Ã¾Ã¸â”¤ý#A    ““â€〜â€〜â€〜â€〜â€〜

这是一个TEXT DOS 并编码此文本是:

IBM037

IBM437

IBM500

ASMO-708

DOS-720

ibm737

ibm775

ibm850

ibm852

IBM855

ibm857

IBM00858

IBM860

ibm861

DOS-862

IBM863

IBM864

IBM865

cp866

ibm869

IBM870

windows-874

cp875

shift_jis

gb2312

ks_c_5601-1987

big5

IBM1026

IBM01047

IBM01140

IBM01141

IBM01142

IBM01143

IBM01144


IBM01145

IBM01146

IBM01147

IBM01148

IBM01149

utf-16

unicodeFFFE

windows-1250

windows-1251

Windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

Johab

macintosh

x-mac-japanese

x-mac-chinesetrad

x-mac-korean

x-mac-arabic

x-mac-hebrew

x-mac-greek

x-mac-cyrillic



x-mac-chinesesimp

x-mac-romanian

x-mac-ukrainian

x-mac-thai

x-mac-ce

x-mac-icelandic

x-mac-turkish

x-mac-croatian

utf-32

utf-32BE

x-Chinese-CNS

x-cp20001

x-Chinese-Eten

x-cp20003

x-cp20004

x-cp20005

x-IA5

x-IA5-German

x-IA5-Swedish

x-IA5-Norwegian

us-ascii

x-cp20261

x-cp20269

IBM273

IBM277

IBM278

IBM280

IBM284

IBM285

IBM290

IBM297

IBM420

IBM423

IBM424

x-EBCDIC-KoreanExtended

IBM-Thai

koi8-r

IBM871

IBM880

IBM905

IBM00924

EUC-JP

x-cp20936

x-cp20949

cp1025

koi8-u

iso-8859-1

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

x-Europa

iso-8859-8-i

iso-2022-jp

csISO2022JP

iso-2022-jp

iso-2022-kr

x-cp50227

euc-jp

EUC-CN

euc-kr

hz-gb-2312

GB18030

x-iscii-de

x-iscii-be

x-iscii-ta

x-iscii-te

x-iscii-as

x-iscii-or

x-iscii-ka

x-iscii-ma

x-iscii-gu

x-iscii-pa

utf-7

utf-8

2 个答案:

答案 0 :(得分:3)

要阅读文件,您需要知道此文件中使用的编码。

如果你不知道,你可以遍历所有编码,看看是否找到了有效的编码。

const string FileName = "FileName";
foreach (var encodingInfo in Encoding.GetEncodings())
{
    try
    {
        var encoding = encodingInfo.GetEncoding();
        var text = File.ReadAllText(FileName, encoding);
        Console.WriteLine("{0} - {1}", encodingInfo.Name, text.Substring(0, 20));

        // put break point and check if text is readable here
    }
    catch (Exception ex)
    {
        Console.WriteLine("Failed: {0}", encodingInfo.Name);
    }
}

免责声明:假设这是一个文本文件,假设文件不是很大。

答案 1 :(得分:0)

好吧,看起来你正在尝试打开一个.dat文件,它可能是用字节格式编写的

尝试以下代码

        File readThis = new File("file directory");
        byte[] aByte = new byte[(int)readThis.length()];
        FileInputStream Fis = new FileInputStream(readThis);
        Fis.read(aByte);
        System.out.println(Contents: "+aByte);
        Fis.close();

让我知道它是怎么回事:))