Browse Source

Fixed copying from ICSharpCode.TextEditor to wordpad (encode of characters that are not in Windows-1252).

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4453 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
bf075f251b
  1. 28
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/RtfWriter.cs

28
src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/RtfWriter.cs

@ -145,7 +145,7 @@ namespace ICSharpCode.TextEditor.Util
printWord = word.Word; printWord = word.Word;
} }
rtf.Append(printWord.Replace(@"\", @"\\").Replace("{", "\\{").Replace("}", "\\}")); AppendText(rtf, printWord);
} }
offset += word.Length; offset += word.Length;
break; break;
@ -160,5 +160,31 @@ namespace ICSharpCode.TextEditor.Util
return rtf.ToString(); return rtf.ToString();
} }
static void AppendText(StringBuilder rtfOutput, string text)
{
//rtf.Append(printWord.Replace(@"\", @"\\").Replace("{", "\\{").Replace("}", "\\}"));
foreach (char c in text) {
switch (c) {
case '\\':
rtfOutput.Append(@"\\");
break;
case '{':
rtfOutput.Append("\\{");
break;
case '}':
rtfOutput.Append("\\}");
break;
default:
if (c < 256) {
rtfOutput.Append(c);
} else {
// yes, RTF really expects signed 16-bit integers!
rtfOutput.Append("\\u" + unchecked((short)c).ToString() + "?");
}
break;
}
}
}
} }
} }

Loading…
Cancel
Save