Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
GRUB_666
0 / 0 / 1
Регистрация: 22.04.2017
Сообщений: 80
1

Как указать кодировку UNICODE при записи в файл?

29.08.2017, 16:14. Просмотров 2212. Ответов 7
Метки нет (Все метки)

Пытался найти разную инфу по поводу записи в файл с определенной кодировкой, однако ни один мне не подходил.

Вот мой "Рабочий вариант", который сохраняет не с той кодировкой с которой надо:

C#
1
2
3
4
using (StreamWriter SW = new StreamWriter(new FileStream(fil_way, FileMode.Create, FileAccess.Write)))
            {
                SW.Write(fil_res.Text);
            }
Буду благодарен, если этот же фрагмент ,но уже переделанный под UNICODE.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2017, 16:14
Ответы с готовыми решениями:

Как указать кодировку при чтении с файла
Суть программы. Имеется файл data.txt, в котором в такой последовательности записаны символы aaa...

Как указать формат ячейки при записи в файл csv
Ребята, не подскажите как указать формат ячейки при записи в файл csv? В коде выделил красным...

Указать кодировку при чтении из файла
using System; using System.IO; using System.Collections.Generic; using System.ComponentModel;...

StreamWriter: как указать кодировку
в книгах написано что сохранять и открывать файлы нужно так: StreamWriter autput = new...

StreamWriter, StreamReader, где и как указать кодировку
В C# как известно все символы кодируются 2-мя байтами - следовательно есть определенные проблемы...

7
kolorotur
Эксперт .NET
13054 / 10206 / 2649
Регистрация: 17.09.2011
Сообщений: 17,341
Завершенные тесты: 1
29.08.2017, 16:21 2
Лучший ответ Сообщение было отмечено kolorotur как решение

Решение

Цитата Сообщение от GRUB_666 Посмотреть сообщение
этот же фрагмент ,но уже переделанный под UNICODE.
C#
1
using (StreamWriter SW = new StreamWriter(new FileStream(fil_way, FileMode.Create, FileAccess.Write), Encoding.UTF8))
0
GRUB_666
0 / 0 / 1
Регистрация: 22.04.2017
Сообщений: 80
29.08.2017, 16:24  [ТС] 3
Спасибо огромное ! Все работает ! Только надо исправить, не UTF8, а Unicode.
0
kolorotur
Эксперт .NET
13054 / 10206 / 2649
Регистрация: 17.09.2011
Сообщений: 17,341
Завершенные тесты: 1
30.08.2017, 09:39 4
Цитата Сообщение от GRUB_666 Посмотреть сообщение
Только надо исправить, не UTF8, а Unicode.
А почему именно UTF16?
UTF8 лучше для хранения и передачи — меньше размер данных.
0
Fleder
257 / 218 / 108
Регистрация: 09.12.2015
Сообщений: 651
30.08.2017, 11:07 5
Цитата Сообщение от kolorotur Посмотреть сообщение
А почему именно UTF16?
UTF8 лучше для хранения и передачи — меньше размер данных.
UTF-16 - любой символ весит два байта.

В UTF-8 английские символы и цифры весят всего один байт.
Русские - два байта.

Для ещё большей "экономии" места можно использовать кодировку 1251:
весь русский алфавит, весь английский, цифры и самые ходовые символы - всё по "цене" в один байт.
1
kolorotur
Эксперт .NET
13054 / 10206 / 2649
Регистрация: 17.09.2011
Сообщений: 17,341
Завершенные тесты: 1
30.08.2017, 11:12 6
Цитата Сообщение от Fleder Посмотреть сообщение
UTF-16 - любой символ весит два байта.
Два или четыре.

Цитата Сообщение от Fleder Посмотреть сообщение
В UTF-8 английские символы и цифры весят всего один байт.
Русские - два байта.
От одного до четырех на любой символ.

Цитата Сообщение от Fleder Посмотреть сообщение
Для ещё большей "экономии" места можно использовать кодировку 1251:
весь русский алфавит, весь английский, цифры и самые ходовые символы - всё по "цене" в один байт.
И ко всем чертям полетят любые символы не из этой кодовой страницы.

Если нет ограничения на набор символов, используемых для хранения в файле/передачи по сети, то UTF8 выигрывает.
2
Fleder
257 / 218 / 108
Регистрация: 09.12.2015
Сообщений: 651
30.08.2017, 11:23 7
Цитата Сообщение от kolorotur Посмотреть сообщение
Два или четыре.
Но ведь любой четырёхбайтовый символ можно нормализовать к двухбайтовому. Я прав?
И как часто на практике встречаются ненормализированные символы?

Цитата Сообщение от kolorotur Посмотреть сообщение
И ко всем чертям полетят любые символы не из этой кодовой страницы.
Ну да, иероглифы не передать!

Цитата Сообщение от kolorotur Посмотреть сообщение
Если нет ограничения на набор символов, используемых для хранения в файле/передачи по сети, то UTF8 выигрывает.
Абсолютно согласен!
1
kolorotur
Эксперт .NET
13054 / 10206 / 2649
Регистрация: 17.09.2011
Сообщений: 17,341
Завершенные тесты: 1
30.08.2017, 11:27 8
Цитата Сообщение от Fleder Посмотреть сообщение
Но ведь любой четырёхбайтовый символ можно нормализовать к двухбайтовому.
Не любой, к сожалению.

Цитата Сообщение от Fleder Посмотреть сообщение
И как часто на практике встречаются ненормализированные символы?
Учитывая дикую популярность эмоджей во всяких чятиках? Думаю, довольно часто.

Цитата Сообщение от Fleder Посмотреть сообщение
Ну да, иероглифы не передать!
Любой символ не из базовой плоскости.
1
30.08.2017, 11:27
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2017, 11:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как для BinaryWriter указать кодировку (если это возможно)
Пишу программу для записи данных в эксель. Для записи у меня есть класс ExcelWriter: ///...

Какую кодировку получаем от преобразования Encoding.Unicode.GetBytes(data)
Коллеги, помогите, кто чем может, сами мы не местные... Есть некоторый клиент, написанный на C#,...

Указать кодировку при записи событий в текстовый файл
Сообщения об ошибках добавляются в поле Memo и затем по кнопке сохраняются в файл:...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.