Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从文件中读取此文本_C#_Encoding_Character Encoding - Fatal编程技术网

C# 如何从文件中读取此文本

C# 如何从文件中读取此文本,c#,encoding,character-encoding,C#,Encoding,Character Encoding,如何阅读下面的课文 ‰€�#îõ‘þüŠ ꑯõù ‚†ƒ� -#�ª÷‘þü “‘ ª“îù )øþ¦ùý ¤ª—ùý î‘õ•þø—¤(#•¢þ¢� ø÷ùùîùõþ#aú�ö ¤�ù ¢�△cˆˆƒ�#‚€� «.: õ¬ø¤Š ›¢øñ#…�…ˆí/Š…/ …€�…ŠTK{^aˆˆƒ�#†/„男朋友 î‘õ•þø—¤ý#ª“îùû‘ý î‘õ•þø—¤ý -- �¥c 我使用此代码,但不显示所有字符 FileStream fs = new FileStream(open.FileNam

如何阅读下面的课文

‰€�#îõ‘þüŠ ꑯõù ‚†ƒ� -#�ª÷‘þü “‘ ª“îù )øþ¦ùý ¤ª—ùý î‘õ•þø—¤(#•¢þ¢� ø÷ùùîùõþ#aú�ö ¤�ù ¢�△cˆˆƒ�#‚€� «.: õ¬ø¤Š ›¢øñ#…�…ˆí/Š…/ …€�…ŠTK{^aˆˆƒ�#†/„男朋友 î‘õ•þø—¤ý#ª“îùû‘ý î‘õ•þø—¤ý -- �¥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);
并显示文本:

-欧元†�#îõâ� �˜Ã¾Ã¼Å ꑯõù ‚†ƒÂ� -#Â�ª÷‘þü “‘ ª“îù )øþ¦ùý ¤ª—ùý î‘õ•þø—¤(#â€� �¢þ¢Â� ø¤÷¢ù ꑯõù Ã#######################�ö ^b掼、掼、掼、掼、掼�ù ¢Â�÷cˆˆÆ�#‚₠¬Â� «.: õ¬ø¤Š›¢øñ#…Â�…ˆí/Š…/ …€Â�阿尔法塔克{^aˆˆÆ'�#†/陜陜陜陜陜陜陜陜陜陜陜陜陜陜陜陜陜陜陜3849 î‘õ•þø—¤ý#Â� �œÃÃÃÃÃÃýÃÃõ

这是一个文本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

看起来你要打开一个.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();

让我知道它是如何运行的:)

要读取该文件,您需要知道该文件中使用了什么编码。

如果你不知道,你可以迭代所有的编码,看看是否找到一个有效的

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);
    }
}

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

它应该是什么语言?它不是UTF8。可能会提供原始文件的链接?这两个文本看起来都像stackoverflow中的胡言乱语。@Ignacio:他可能在Windows上,不知道你在说什么。(除非你对tofutim发表评论?)这是不可回答的。以十六进制(或base64)格式发布文件(开头)表示法,最好是已知结果。您可以在文件中写入编码名称和编码的前20-30个字符。我认为更容易找到正确的字符,而不是在调试器中逐条检查所有字符。@Liviu Trifoi-如果我知道其中包含的字符类型,我会同意。如果这是阿拉伯语,或中文。如果未设置控制台编码,这些将无法在控制台中正确显示。没有太多的编码需要迭代,我只会在调试器中执行,以排除控制台显示问题。@user764499-您可以将文件上载到某个位置吗?例如?@user764499-您找到解决方案了吗?