пробел в символьной / потоковой записи C # - PullRequest
0 голосов
/ 15 августа 2011

Я пытался создать файл фиксированной ширины, но обнаружил, что при использовании символа пробела в моем текстовом файле появляются странные знаки. Если я изменю число «50» на что-то вроде «15» или «1000», оно будет работать нормально.

Это мой код:

string fileName = Path.GetTempPath() + "temp.txt";
FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter writer = new StreamWriter(stream);
writer.Write("1".PadRight(50, ' '));
writer.Write("0".PadRight(756, ' '));
writer.Close();

Что не так?

1 Ответ

0 голосов
/ 15 августа 2011

Не обращайте внимания на то, что вы читали здесь ранее. Я взял вывод вашей программы, который отображается странно в Microsoft Notepad, и открыл его в нескольких других редакторах. Похоже, хорошо во всех из них. Убедившись, что это какая-то ошибка кодирования, я взломал XVI32, чтобы посмотреть на двоичный файл.

Я удалил один пробел в конце файла и заново сохранил файл, и он хорошо отображается. Я положил его обратно, и проблема вернулась. Я изменяю первый шестнадцатеричный символ с 32 на любой меньше 30, и он отлично работает.

Так что это кажется очень странной ошибкой с Microsoft Notepad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...