Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
4 / 4 / 0
Регистрация: 13.07.2015
Сообщений: 128
1

Запись текста в файл в кодировке Unicode Little Endian

10.12.2015, 18:33. Показов 3030. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу записать юникодовскую строку в файл лител ендингом.
C#
1
2
3
4
5
6
7
8
9
10
FileStream sr = new FileStream("D:\\new.txt", FileMode.Open, FileAccess.Write);
BinaryReader bw = new BinaryWriter(sr, Encoding.Unicode);
 
string str = "Новый год";
bw.Write((byte)0xFF);
bw.Write((byte)0xFE);
bw.Write(str);
 
bw.Close();
sr.Close();
когда открываю файл вижу кракозябры(открываю блокнотом). открываю в WinHex вижу что он мне зачем-то биг эндингом пишет. товарищи! что делать как быть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2015, 18:33
Ответы с готовыми решениями:

запись string в файл в определенном формате (из Unicode в ASCII. Файл записывать умею)
Здравствуйте. Можете помочь? Записать файл я умею. Но не понимаю как перевести из кодировки...

Запись в файл в DOS кодировке
Доброго времени суток пытаюсь с помощью StreamWriter записать в текстовый фаил строчки в DOS...

Запись в файл в нужной кодировке
Есть файл написанный на C++, в него нужно посылать команду, это я сделал.... Но!!!!!!!! Никак не...

Запись в файл в нужной кодировке
Записывается информация с формы...а вместо нее в блокноте какая-то коракозябра....Что делать? Вот...

5
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
10.12.2015, 19:12 2
Цитата Сообщение от ProgSeg Посмотреть сообщение
BinaryReader bw = new BinaryWriter
Как у вас вообще это скомпилировалось?

Попробуйте так
C#
1
2
3
4
5
6
7
8
9
10
            FileStream sr = new FileStream("D:\\new.txt", FileMode.OpenOrCreate, FileAccess.Write);
            BinaryWriter bw = new BinaryWriter(sr, Encoding.Unicode);
 
            string str = "Новый год";
            bw.Write((byte)0xFF);
            bw.Write((byte)0xFE);
            bw.Write(Encoding.Unicode.GetBytes(str));
 
            bw.Close();
            sr.Close();
0
4 / 4 / 0
Регистрация: 13.07.2015
Сообщений: 128
10.12.2015, 19:43  [ТС] 3
Someone007, прошу прощения описался, там BinaryWriter. к концу дня мозги уже не к чёрту

Добавлено через 44 секунды
с BinaryWrite не работает
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
10.12.2015, 20:27 4
ProgSeg, все прекрасно работает. Например, сodepoint для Н это U+041D. В файл это записывается как 1D 04 - то есть little endian порядок. Тоже самое для остальных букв.

Также записывать лучше с помощью StreamWriter т.к. он сам запишет нужный BOM и не будет записывать длину строку, как это делает BinaryWriter
C#
1
2
3
4
5
using (FileStream fstream = new FileStream(@"D:\new.txt", FileMode.Open, FileAccess.Write))
using (StreamWriter writer = new StreamWriter(fstream, Encoding.Unicode))
{
    writer.Write("Новый год");
}
0
4 / 4 / 0
Регистрация: 13.07.2015
Сообщений: 128
10.12.2015, 21:01  [ТС] 5
OwenGlendower, я знаю про StreamWriter, но суть в том что я в файл буду записывать разные данные(не только строки) и BinaryReader лучше подойдёт. я исправил седьмую строчку в своём коде на
C#
1
bw.Write(str.ToCharArray());
и всё заработало. просто строку он всё равно у меня не правильно записывает
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
10.12.2015, 21:24 6
ProgSeg, если строка имеет фиксированную или известную длину, то это вариант. Иначе лучше записывать строку чтобы BinaryReader смог прочитать её.
0
10.12.2015, 21:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2015, 21:24
Помогаю со студенческими работами здесь

Чтение и сохранение текста в файл в кодировке по умолчанию
Здравствуйте. Извиняюсь если уже было, но впервые столкнулся с такой проблемой: Дан файл .txt в...

Сохранить текстовый документ в кодировке Unicode
Создаю блокнот вот таким образом: StreamWriter sw = new StreamWriter("test.txt"); Но по...

BitConverter little-endian -> big-endian
Копирую в массив byte некоторые значения byte msg = new byte;...

Как Консольное-приложение в Lazarus сдружить c кодировкой Unicode или Unicode Big Endian или UTF-8
Нужно чтобы Lazarus отображал символы псевдографики желательно все, но в основном вот эти......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru