Эквивалент FileSystemObject.OpenTextFile (fileName, ForReading) в c # - PullRequest
2 голосов
/ 15 февраля 2012

Я хочу конвертировать следующий код VB в C #

Public Function ReadATextFile(fileName As String) As String
Dim FSO As New FileSystemObject
Dim Tsr As TextStream
Dim ReturnString  As String

 If FSO.FileExists(fileName) Then
     Set Tsr = FSO.OpenTextFile(fileName, ForReading)
            ReturnString = Tsr.ReadAll
            Tsr.Close

 ReadATextFile=ReturnString 

 End If

End Function

эта процедура просто читает файл в строку, используя FileSystemObject в VBA

Я использовал string str = File.ReadAllText(ofd.FileName); in c#

но проблема здесь в том, что когда я исследую строку из VBA, длина строки составляет около 13000, а строки из c # - около 15000

почему такая разница? какие дополнительные символы добавляются через c #? Это зависит от кодировки, компилятора или любого другого фактора ...

1 Ответ

3 голосов
/ 15 февраля 2012

Версия C # будет использовать кодировку UTF-8, которая может объяснить разницу.

Попробуйте явно указать кодировку, например,

File.ReadAllText(ofd.FileName, Encoding.Default); 

Encoding.Default - кодировка для операционнойтекущая страница ANSI системы.Несмотря на свое название, он не используется в качестве кодировки по умолчанию для большинства методов, которые принимают необязательный параметр Encoding.

...