Browse Source

Fixed forum-15062: TextEditor changes encoding of UTF-16 files to UTF-8.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2682 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
378073478e
  1. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/DocumentAccessor.cs
  2. 2
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/XomlDesignerLoader.cs
  3. 3
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DocumentFactory.cs
  4. 10
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/StringTextBufferStrategy.cs
  5. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs
  6. 20
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/FileReader.cs
  7. 5
      src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs
  8. 3
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  9. 3
      src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/DocumentAccessor.cs

@ -137,7 +137,7 @@ namespace CSharpBinding.FormattingStrategy @@ -137,7 +137,7 @@ namespace CSharpBinding.FormattingStrategy
{
this.filename = filename;
f = new FileStream(filename, FileMode.Open, FileAccess.Read);
r = ICSharpCode.TextEditor.Util.FileReader.OpenStream(f, ParserService.DefaultFileEncoding, ParserService.DefaultFileEncoding);
r = ICSharpCode.TextEditor.Util.FileReader.OpenStream(f, ParserService.DefaultFileEncoding);
}
int num = 0;

2
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/XomlDesignerLoader.cs

@ -61,7 +61,7 @@ namespace WorkflowDesigner.Loaders @@ -61,7 +61,7 @@ namespace WorkflowDesigner.Loaders
public XomlDesignerLoader(IViewContent viewContent, Stream stream) : this(viewContent)
{
Encoding encoding = ICSharpCode.SharpDevelop.ParserService.DefaultFileEncoding;
xoml = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(stream, ref encoding, encoding);
xoml = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(stream, ref encoding);
}
public string Xoml {

3
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DocumentFactory.cs

@ -51,8 +51,7 @@ namespace ICSharpCode.TextEditor.Document @@ -51,8 +51,7 @@ namespace ICSharpCode.TextEditor.Document
public IDocument CreateFromFile(string fileName)
{
IDocument document = CreateDocument();
Encoding encoding = Encoding.Default;
document.TextContent = Util.FileReader.ReadFileContent(fileName, ref encoding, encoding);
document.TextContent = Util.FileReader.ReadFileContent(fileName, Encoding.Default);
return document;
}
}

10
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/StringTextBufferStrategy.cs

@ -72,18 +72,14 @@ namespace ICSharpCode.TextEditor.Document @@ -72,18 +72,14 @@ namespace ICSharpCode.TextEditor.Document
{
}
StringTextBufferStrategy(string fileName)
{
Encoding encoding = Encoding.Default;
SetContent(Util.FileReader.ReadFileContent(fileName, ref encoding, encoding));
}
public static ITextBufferStrategy CreateTextBufferFromFile(string fileName)
{
if (!File.Exists(fileName)) {
throw new System.IO.FileNotFoundException(fileName);
}
return new StringTextBufferStrategy(fileName);
StringTextBufferStrategy s = new StringTextBufferStrategy();
s.SetContent(Util.FileReader.ReadFileContent(fileName, Encoding.Default));
return s;
}
}
}

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs

@ -654,7 +654,7 @@ namespace ICSharpCode.TextEditor @@ -654,7 +654,7 @@ namespace ICSharpCode.TextEditor
if (autodetectEncoding) {
Encoding encoding = this.Encoding;
Document.TextContent = Util.FileReader.ReadFileContent(stream, ref encoding, this.TextEditorProperties.Encoding);
Document.TextContent = Util.FileReader.ReadFileContent(stream, ref encoding);
this.Encoding = encoding;
} else {
using (StreamReader reader = new StreamReader(fileName, this.Encoding)) {

20
src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/FileReader.cs

@ -23,30 +23,28 @@ namespace ICSharpCode.TextEditor.Util @@ -23,30 +23,28 @@ namespace ICSharpCode.TextEditor.Util
return codepage == 65001 || codepage == 65000 || codepage == 1200 || codepage == 1201;
}
public static string ReadFileContent(Stream fs, ref Encoding encoding, Encoding defaultEncoding)
public static string ReadFileContent(Stream fs, ref Encoding encoding)
{
using (StreamReader reader = OpenStream(fs, encoding, defaultEncoding)) {
using (StreamReader reader = OpenStream(fs, encoding)) {
reader.Peek();
encoding = reader.CurrentEncoding;
return reader.ReadToEnd();
}
}
public static string ReadFileContent(string fileName, ref Encoding encoding, Encoding defaultEncoding)
public static string ReadFileContent(string fileName, Encoding encoding)
{
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
using (StreamReader reader = OpenStream(fs, encoding, defaultEncoding)) {
encoding = reader.CurrentEncoding;
return reader.ReadToEnd();
}
return ReadFileContent(fs, ref encoding);
}
}
public static StreamReader OpenStream(Stream fs, Encoding suggestedEncoding, Encoding defaultEncoding)
public static StreamReader OpenStream(Stream fs, Encoding defaultEncoding)
{
if (fs == null)
throw new ArgumentNullException("fs");
if (fs.Length > 3) {
if (fs.Length >= 2) {
// the autodetection of StreamReader is not capable of detecting the difference
// between ISO-8859-1 and UTF-8 without BOM.
int firstByte = fs.ReadByte();
@ -63,8 +61,8 @@ namespace ICSharpCode.TextEditor.Util @@ -63,8 +61,8 @@ namespace ICSharpCode.TextEditor.Util
return AutoDetect(fs, (byte)firstByte, (byte)secondByte, defaultEncoding);
}
} else {
if (suggestedEncoding != null) {
return new StreamReader(fs, suggestedEncoding);
if (defaultEncoding != null) {
return new StreamReader(fs, defaultEncoding);
} else {
return new StreamReader(fs);
}

5
src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs

@ -282,11 +282,10 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -282,11 +282,10 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
conversion.basePath = Path.GetDirectoryName(fileName);
Encoding tmp = Encoding.Default;
string content = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(old, ref tmp, tmp);
string content = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(old, Encoding.Default);
RunConverter(new StringReader(content), fileName, "vsnet2msbuild.xsl", conversion);
if (File.Exists(oldUserFile)) {
content = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(oldUserFile, ref tmp, tmp);
content = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(oldUserFile, Encoding.Default);
RunConverter(new StringReader(content), userFile, "vsnet2msbuild_user.xsl", conversion);
}
}

3
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -623,8 +623,7 @@ namespace ICSharpCode.SharpDevelop @@ -623,8 +623,7 @@ namespace ICSharpCode.SharpDevelop
// return res;
// load file
Encoding tmp = DefaultFileEncoding;
return ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(fileName, ref tmp, tmp);
return ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(fileName, DefaultFileEncoding);
}
public static Encoding DefaultFileEncoding {

3
src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs

@ -84,8 +84,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -84,8 +84,7 @@ namespace ICSharpCode.SharpDevelop.Project
// While one file is parsed, the next is already loaded from disk.
// load file
Encoding tmp = defaultEncoding;
return ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(fileName, ref tmp, defaultEncoding);
return ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(fileName, defaultEncoding);
}
ProjectItem nextItem;

Loading…
Cancel
Save