2013-09-05 4 views
1

Как установить кодировку, с помощью которой консольное приложение .NET читает входной файл?vb.net console readline с использованием специальной кодировки

У меня есть файл UTF16, и когда я звоню Console.ReadLine, ясно, что кодировка не была должным образом соблюдена. Строка, исходящая от этого вызова, выглядит плохо.

Sublime Text 2 сообщает, что файлы находятся в закодированном как:

UTF-16 LE with BOM 

Вот код:

pstrLine = Console.ReadLine() //bad line here 

    Do 
     pactHandler(pstrLine) 
     pstrLine = Console.ReadLine() 
    Loop Until pstrLine Is Nothing 

линия возвращается, и я могу прочитать его, но это не совсем верно. Кажется, у каждого персонажа есть пробел между ними. И линия начинается с непечатаемого символа.

Когда я смотрю на входной файл выглядит так:

MY DATA IS HERE 

Когда он приходит в через ReadLine:

$M Y D A T A I S H E R E 

$ представляет и нецензурный характер, который выглядит как блок.

+1

Я предполагаю, что вы используете перенаправление ввода. Не делайте этого, вы не можете надежно обнаружить кодировку текста с этим. Фактически откройте файл с помощью StreamReader. –

ответ

0

Категория System.Console имеет объект: InputEncoding и OutputEncoding.

Поставьте значение для этих свойств с помощью знака UnicodeEncoding object whose constructor you provide two bools: знак большого конца и байта.

Imports System.Text 
Imports System.IO 

Dim Utf16LeBom = New UnicodeEncoding(False, True) 
Console.InputEncoding = Utf16LeBom 
Console.OutputEncoding = Utf16LeBom 
Console.ReadLine() 

Если вы идете, чтобы изменить свой код для чтения из потока с помощью StreamReader, вы можете использовать один и тот же объект UnicodeEncoding.

+0

Ваше время и усилия очень ценятся. Спасибо. – Mario

Смежные вопросы