从c#中的多个编码中读取文件

时间:2015-03-18 12:36:19

标签: c# encoding utf-8

ENV:C#,VStudio 2013,4.5 Framework,Winforms,nHapi 2.3 dll

我真的需要帮助。我已经尝试过很多东西,并且和我最好的朋友google进行了很多研究;-)。但没有运气。

我正在构建HL7发件人工具,而我正在从文件夹中读取文件。我的文件来自多个来源,我发现它们有不同的编码:我用notepadd ++打开它们,它们可以是ainsi,utf8和utf8,没有BOM。我的文件还包含特殊的字符,如é,à,ç,ô,....但是当我用这行读取文件时,它们总是会出现奇怪的因素:var hl7message = File.ReadAllText(e.Node.Name);

我唯一没有任何问题的时候是源文件是用UTF8编码的。

有没有办法,无论源文件编码是什么,我总是可以读取字符串中的文件并正确显示特殊字符。

这是我的代码的主要部分:

var hl7message = File.ReadAllText(FileName);
var llphl7message = Convert.ToChar(11).ToString() + newmessage + Convert.ToChar(28).ToString() + Convert.ToChar(13).ToString();

// Get the size of the message that we have to send.
Byte[] bytesSent = Encoding.Default.GetBytes(llphl7message);
Byte[] bytesReceived = new Byte[256];

// Create a socket connection with the specified server and port.
Socket s = ConnectSocket(txtParamServer.Text, Convert.ToInt32(txtParamPort.Text));
// If the socket could not get a connection, then return false.
if (s == null)
{
                    txtLog.Text = txtLog.Text + "[" + DateTime.Now + "] [ERR] Serveur " + txtParamServer.Text + " sur le port " + txtParamPort.Text + " est non disponible" + "\r\n";
                    return false;
}

// Send message to the server.
s.Send(bytesSent, bytesSent.Length, 0);

谢谢你的帮助 对不起英语不好:不是我的主要语言

理查德

1 个答案:

答案 0 :(得分:1)

尝试使用StreamReader类。它有一个" detectEncodingFromByteOrderMarks"的参数。

            string result;
            using (System.IO.StreamReader reader = new System.IO.StreamReader("FILENAME", true))
            {
                result = reader.ReadToEnd();
            }