首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析特殊的Newline

解析特殊的Newline
EN

Stack Overflow用户
提问于 2009-11-26 07:07:23
回答 3查看 150关注 0票数 1

我肯定这是很简单的事情,我搞砸了,但我要说:

我正试图解析一个通常用UNICODE格式化的日志文件(我可以坦率地承认,我对UNICODE不太了解,但是文件的前两个字节是0xFFFE,其他每个字符之间都有一个零)。奇怪的是,这个文件似乎以字节序列0x0D000D0A结束行,即\r\0\r\n,这显然使我的TextReader无法读取它。

也就是说,我打印的每一行都充满了:

代码语言:javascript
复制
?????????????????? ???????????? ?      ?????????  ? ?????????????  ? ?????????????? ???? ??? ????? ???????????????????? ??? ???????????? ????????????????? ?????????????????????? ???????????????????? ?????? ????????????????????? ????????????? ?????

对于我来说,使用C#解析这个问题的推荐方法是什么?或者说,我做错了什么?

谢谢!

更新:对不起,我可能应该包括我在初始发布中使用的代码。下面是:

代码语言:javascript
复制
FileStream fsa = File.Open(@"C:\InboxLOG.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
TextReader sr = new StreamReader(fsa, Encoding.Unicode, true);
string line = "";
while ((line = sr.ReadLine()) != null)
{              
     Console.WriteLine(line);
}

使用StreamReader(fsa)会产生相同的结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-26 07:19:07

嗯..。0x0D000D0A?

你的台词看起来确实很烂。你可能需要更多的手工解析它通过一个流..。我会料到0x0D000A000?(因为这是小恩典)。我想知道一个非Unicode进程是否做了一个“用crlf替换lf”的扫描,并把它弄糟了。当然,您也可以这样做,并且(以两个块处理字节)将0D0A替换为0A00 (仅从偶数字节开始)。但从未损坏的数据开始总是一个更好的选择.

曾:

0xFFFE是一个BOM,所以任何涉及StreamReader等(如File.OpenText)的东西都应该自动处理并选择正确的编码。如果没有,给它一个线索:

代码语言:javascript
复制
using(var reader = new StreamReader(path, Encoding.Unicode)) {
    ...
}
票数 2
EN

Stack Overflow用户

发布于 2009-11-26 07:18:35

请尝尝这个

代码语言:javascript
复制
StreamReader reader = new StreamReader(filePath, System.Text.Encoding.Unicode, true);

似乎是UTF16编码,0xFFFE是字节顺序标记。

http://en.wikipedia.org/wiki/Byte_order_mark

票数 2
EN

Stack Overflow用户

发布于 2009-11-26 07:23:27

我猜您实际上是在使用StreamReader,因为TextReader是一个抽象类。

根据您的描述,您的文本以UTF-16表示,但StreamReader默认为UTF-8。在构造StreamReader时,需要告诉它使用UTF-16:

代码语言:javascript
复制
new StreamReader(..., System.Text.Encoding.Unicode);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1802003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档