Но в Convert.ToBase64String(bytes, 0, (int) fsIn.Length) совсем не,то что в файле(в текстовом виде).
Подскажите как поправить ситуацию(в файле используется кодировка UTF-8).
Здравствуйте, Unholy, Вы писали:
U>Здравствуйте, Closer, Вы писали:
C>>ToBase64String или FromBase64String?
U>ToBase64String, я пытаюсь сконвертить из массива байтов в строку.
Просто ToBase64String конвертирует массив байт в строку в формате Base64. У тебя так я понимаю строка уже приходит в формате Base64.
Если так то нужно использовать FromBase64String, а чтобы перевести полученый с её помошью массив байт нужно использовать метод Encoding.UTF8.GetString
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Вообщем использовал System.Text.Encoding.UTF8.GetString(bytes) и получил свою строку, но тут встает вопрос о том чтобы
абстрагироваться от UTF-8, вдруг другаю кодировка. Что с этим можно сделать?
Здравствуйте, Closer, Вы писали:
C>Просто ToBase64String конвертирует массив байт в строку в формате Base64. У тебя так я понимаю строка уже приходит в формате Base64. C>Если так то нужно использовать FromBase64String, а чтобы перевести полученый с её помошью массив байт нужно использовать метод Encoding.UTF8.GetString
Мне нужно получить из байтов строку, а FromBase64String делает наоборот.
Здравствуйте, Unholy, Вы писали:
U>Здравствуйте, Closer, Вы писали:
C>>Просто ToBase64String конвертирует массив байт в строку в формате Base64. У тебя так я понимаю строка уже приходит в формате Base64. C>>Если так то нужно использовать FromBase64String, а чтобы перевести полученый с её помошью массив байт нужно использовать метод Encoding.UTF8.GetString
U>Мне нужно получить из байтов строку, а FromBase64String делает наоборот.
Тебе данные приходят из txtDownloadFile.PostedFile.InputStream приходят в формате Base64?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Комментарий.
Вот какая встала задача, есть произвольный текстовый файл, надо его загрузить в БД( SQL Server 2000):
1. получаю массив byte[] из Stream
2. загружаю в поле типа image
3. конвертю массив в строку и совершаю с ним некие действа как со строкой
Затем надо его выгрузить из БД в массив, сконвертить в строку, совершить некие действа как со строкой
Необходимо ли знать кодировку для того чтобы сконвертить в строку(по-моему необходимо, а то ему не откуда будет знать как конвертить)?
Тогда получается
1. Мне необходимо при загрузки в БД в какое-нибудь поле сохранить кодировку. Как ее получить(если у меня есть только поток)?
2. Необходимо в зависимости от кодировки массиву byte[] сопоставить строку. Опять же как это реализовать(в предположении, что 1 выполнено)?
Здравствуйте, Unholy, Вы писали:
U>Здравствуйте, Closer, Вы писали:
C>>Тебе данные приходят из txtDownloadFile.PostedFile.InputStream приходят в формате Base64?
U>Был бы очень рад ответить на Ваш вопрос, но не совсем его понимаю как это посмотреть(у меня произвольный текстовый файл)?
Вот так вот выглядит строка в Base64 (т.е. состоит из английских букв и цифр, всё это дело заканчивается знаками равно)
5EwZHbBzfuM8+t5P/wHZvFPO4rnWEQAAAABJRU5ErkJggg==
Я так понимаю что она у тебя в этом формате приходит, иначе зачем тогда тебе вызывать метод Convert.ToBase64String
XmlDocument xd = new XmlDocument();
xd.LoadXml(Convert.ToBase64String(bytes, 0, (int) fsIn.Length));
Но Convert.ToBase64String переводит масив байт в строку в формате Base64, т.е. у тебя получается что-то вроде этого
XmlDocument xd = new XmlDocument();
xd.LoadXml("5EwZHbBzfuM8+t5P/wHZvFPO4rnWEQAAAABJRU5ErkJggg==");
И судя по всему метод LoadXml падает. т.к. не может конвертировать эту строку в XML.
Так?
Если так, то чтобы перевести "5EwZHbBzfuM8+t5P/wHZvFPO4rnWEQAAAABJRU5ErkJggg==" в нормальный вид (т.е. декодировать) тебе нужно использовать метод FromBase64.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Да, все именно так как Вы написали.
C>Если так, то чтобы перевести "5EwZHbBzfuM8+t5P/wHZvFPO4rnWEQAAAABJRU5ErkJggg==" в нормальный вид (т.е. декодировать) тебе нужно использовать метод FromBase64.
Может быть я по жесткому торможу, но по-моему Convert.FromBase64String принимает строку и возвращает массив byte[],
а мне просто нужно строку которая будет читаться LoadXml и надо получить ее из массива типа byte[].
Здравствуйте, Unholy, Вы писали:
U>Вообщем использовал System.Text.Encoding.UTF8.GetString(bytes) и получил свою строку, но тут встает вопрос о том чтобы U>абстрагироваться от UTF-8, вдруг другаю кодировка. Что с этим можно сделать?
передавать кодировку вместе со строкой
Здравствуйте, Unholy, Вы писали:
U>Может быть я по жесткому торможу, но по-моему Convert.FromBase64String принимает строку и возвращает массив byte[],
Верно, в качестве аргумента подаётся строка вида "5EwZHbBzfuM8+t5P/wHZvFPO4rnWEQAAAABJRU5ErkJggg==", а на выходе функции получается массив байт в котором содержится расшифрованная строка. Только вот эта функция тебе как я понимаю ни к чему. Ты просто хочешь из массива байт получить строку если это так то сделать это можно с помошью метода Encoding.UTF8.GetString который на основании массива байт вернёт тебе строку.
U>а мне просто нужно строку которая будет читаться LoadXml и надо получить ее из массива типа byte[].
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Здравствуйте, Closer, Вы писали:
C>Верно, в качестве аргумента подаётся строка вида "5EwZHbBzfuM8+t5P/wHZvFPO4rnWEQAAAABJRU5ErkJggg==", а на выходе функции получается массив байт в котором содержится расшифрованная строка. Только вот эта функция тебе как я понимаю ни к чему. Ты просто хочешь из массива байт получить строку если это так то сделать это можно с помошью метода Encoding.UTF8.GetString который на основании массива байт вернёт тебе строку.
Спасибо Вам за то что так долго и упорно мне отвечаете, во всем разобрался.
Забил на строку(способ с Encoding.UTF8.GetString, но кодировки могут быть разными, дополнительная маята),
окрыл MemoryStream на массиве byte[], и из потока уже считываю в XmlDocument методом Load(надеюсь будет считывать вне зависимости от кодировки файла).