C # - проблема кодировки файлов - PullRequest
2 голосов
/ 26 марта 2010

У меня есть StringBuilder, который записывает содержимое в файл.В конце каждого файла я пишу символ авторского права.Как ни странно, я заметил, что всякий раз, когда пишется символ авторского права, ему предшествует «В».Мой код, который генерирует содержимое файла, выглядит следующим образом:

using (StringWriter stringWriter = new StringWriter())
{
  stringWriter = GetFileContent();

  string targetPath = ConfigurationManager.AppSettings["TargetPath"];
  using (StreamWriter streamWriter = new StreamWriter(targetPath, false))
  {
    StringBuilder sb = new StringBuilder(stringWriter.ToString());

    // Attempted fix
    string content = sb.ToString();
    content = content.Replace("Â", "");

    streamWriter.Write(content);
  }
}

Как вы можете сказать, я пытался найти и заменить.В процессе, я заметил, что «В» не было в самом контенте.Это заставляет меня поверить, что что-то происходит в streamWriter.Однако я не уверен, что это может быть.

Может кто-нибудь сказать мне, почему перед символом «©» появляется «В» и как это исправить?Я верю, что это как-то связано с кодированием, но я не уверен

Спасибо!

1 Ответ

2 голосов
/ 26 марта 2010

Проблема почти наверняка заключается либо в том, как вы просматриваете файл впоследствии (он будет сохранен как UTF-8), либо в том, как вы читаете содержимое существующего файла в GetFileContent(). Если бы вы могли дать нам больше информации по обоим этим вопросам, я уверен, что мы найдем ответ.

Фактический код, который вы получили - хотя и немного странный и многословный из-за ваших попыток исправить ситуацию - в порядке.

My думаю, означает, что вы просматриваете файл в текстовом редакторе, который использует Windows-1252 или что-то подобное. Если вы можете сказать ему использовать UTF-8, я подозреваю, что все будет хорошо.

...