Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Text;
- namespace Task2
- {
- public class Task2
- {
- public static Tuple<Encoding?, Encoding?> ParseArgs(string[] args)
- {
- var inputEncoding = Encoding.GetEncoding(args[1]);
- var outputEncoding = Encoding.GetEncoding(args[2]);
- return new Tuple<Encoding?, Encoding?>(inputEncoding, outputEncoding);
- }
- public static String ReadFile(string filename, Encoding encoding)
- {
- var text = File.ReadAllText(filename, encoding);
- return text;
- }
- public static String Convert(String lines, Tuple<Encoding, Encoding> encodings)
- {
- Encoding inputEncoding = encodings.Item1;
- Encoding outputEncoding = encodings.Item2;
- byte[] inputBytes = inputEncoding.GetBytes(lines);
- byte[] outputBytes = Encoding.Convert(inputEncoding, outputEncoding, inputBytes);
- char[] outputChars = new char[outputEncoding.GetCharCount(outputBytes, 0, outputBytes.Length)];
- outputEncoding.GetChars(outputBytes, 0, outputBytes.Length, outputChars, 0);
- string outputString = new string(outputChars);
- Console.WriteLine("Original string: {0}", lines);
- Console.WriteLine("Сonverted string: {0}", outputString);
- return outputString;
- }
- public static void FileOutput(string filename, String lines, Encoding encoding)
- {
- File.WriteAllText(filename, lines, encoding);
- }
- public static void FileOutputNoEncoding(string filename, String lines)
- {
- File.WriteAllText(filename, lines);
- }
- public static void Main(string[] args)
- {
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- var encodings = ParseArgs(args);
- var lines = ReadFile(args[0], encodings.Item1);
- if (encodings.Item1.Equals(Encoding.GetEncoding("windows-1251")))
- {
- var converted = Convert(lines, encodings);
- FileOutputNoEncoding(args[0], lines);
- }
- else FileOutput(args[0], lines, encodings.Item2);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment