Сам файл англоязычный. Пробовал запускать программу как под русской так и под английской локалью, разницы не увидел.
На 2005 студии под XP съехавший символ отличается от того что на 2008 студии под Вистой.
Подскажите пожалуйста,
- есть ли надежный способ не повредить содержимое текстового файла?
- можно ли отследить программно, что исходная строка не соответствует той, что неудачно скорирована?
Member
Статус: Не в сети Регистрация: 09.01.2006 Откуда: Moscow
Кусок где редактируете строку внимательно смотрите, где-то, возможно, приведение типов срабатывает лишее автоматическое.
Банальное копирование построчно файла в файл ошибок не дает.
Код:
String line; while ((line = sr.ReadLine()) != null) sw.WriteLine(line);
Получил файл (copy.txt) с содержимым -
<META name="Author" content=" ****** - All rights reserved">
Запустил в пошаговом режиме в момент присвоения значения переменная s получает значение
"<META name=\"Author\" content=\" ****** - All rights reserved\">"
Member
Статус: Не в сети Регистрация: 09.01.2006 Откуда: Moscow
У вас в исходном файле сам символ закодирован неверно, потому он и уничтожается при попытке раскодировать его (string не при чем, оно уничтожается еще на стадии раскодирования строки из utf8 в unicode).
Создайте файл самым обычным блокнотом (WinXP) и сохраните как utf8, либо прям из софтины создайте файл с этой строкой и посмотрите отличия...
Member
Статус: Не в сети Регистрация: 10.07.2006 Откуда: Moscow
NullPointer писал(а):
У вас в исходном файле сам символ закодирован неверно, потому он и уничтожается при попытке раскодировать его (string не при чем, оно уничтожается еще на стадии раскодирования строки из utf8 в unicode). Создайте файл самым обычным блокнотом (WinXP) и сохраните как utf8, либо прям из софтины создайте файл с этой строкой и посмотрите отличия...
Ясно. Спасибо.
Но проблема еще в том, что файлы уже есть и в них надо делать замены текста без потери символов. Если исправлять вручную отдельные символы, то теряется весь смысл программы.
И остается вопрос, как программно отследить что строка считана некорректно (что кодировка не соответствует той в которой происходит работа с файлом)?
(вариант отдельным построчным сравнением каждой строки в исходном и измененном файле не греет)
Member
Статус: Не в сети Регистрация: 09.01.2006 Откуда: Moscow
Выставить локаль системную такую же как там где созданы файлы, и работать с исходным файлом указав Encoding.ASCII. Сконвертить, если нужно, через Encoding::Convert...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения