![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Процесс такой:
1)содержимое textBox записывается в char массив , 2)далее он преобразуется в byte массив, который передается по сети 3)после принятия из сетевого потока эти данные у клиента записываются в свой byte массив 4)потом этот полученный массив преобразуется обратно в char и передается в объект StringBuilder 5)далее этот объект преобразуется в string и выводится в textArea но проблема такая - почему-то русские буквы передаются некорректно (т.е. в конце получаем какие-то левые символы), а вот английские буквы передаются нормально! помогите плз!!! Подскажите в чем проблема и как ее решить! |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Строки в .НЕТ - UTF-16 / UTF-8, а байт может держать только 255 символов
-------------------- |
|||
|
||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Согласен! Но как решить данную проблему?
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Дык всё равно это юникод, просто в UTF-8 под русские символы с флагом второго байта 2 байта на символ отсылаются. Другое дело если при отправке не к UTF-8 текст приводится, то в зависимости от кодировки текст и будет бится... А нельзя ли самому к UTF-8 закодировать, получить байтовый массив, а затем его отправить? -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
У меня аналогичная проблема:
private void button1_Click(object sender, System.EventArgs e) { StreamReader sr=File.OpenText(@"c:\IN.txt"); StreamWriter sw=File.CreateText(@"c:\OUT.txt"); string input; while ((input=sr.ReadLine())!=null) { richTextBox1.AppendText(input); sw.WriteLine(input); } sw.Close(); sr.Close(); } IN.TXT юникод или винд. кодировка OUT.TXT записывается "ероглифы", кодировка не определяется. в richTextBox всё показывается правильно Как нормально выводить русские буквы в OUT.TXT??? P.S. Как в посте сделать, чтобы не убирались пробелы в начале строк? Это сообщение отредактировал(а) Vadim999 - 19.3.2005, 17:16 |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
-------------------- |
|||
|
||||
| Kurt |
|
||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Vadim999
Твой код нормально работает, если исходный файл был в формате Unicode (специально проверил). С "не-Unicode" твой код работать не сможет. Прочитай про методы CreateText() и OpenText(). Там сказано:
(это для OpenText) Т.е. при использовании этих методов подразумевается UTF-8. Для других кодировок, думаю, следует работать с массивами байтов, как показал Domestic Cat
-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||
|
|||||
| Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
Ааа! Теперь всё ясно!
|
|||
|
||||
| alir |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Ура! Я нашел решение!
Дело в том, что по умолчанию стоит кодировка UTF-8 - отсюда и некорректность передачи русских символов. Т.е. надо было использовать кодировку Unicode. Делается так:
Далее (в моем случае это отправка byte массива по сетевому потоку) на месте декодируем:
Вот и все! |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
А ты мой пример пробовал запускать?
Просто дело в том, что UTF-8 и есть Unicode... -------------------- |
|||
|
||||
| Kurt |
|
||||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Точно? Вот выдержки из MSDN. Описание класса UnicodeEncoding:
А вот UTF8Encoding:
-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||
|
|||||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Да видишь ли... UTF расшифровывается как Unicode Transformation Format... -------------------- |
|||
|
||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Вообще да, но все-таки они отличаются! Нужна была именно кодировка Unicode, а не UTF-8! |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Неужтo UTF-8 как-то нe так русские буквы передает ?? -------------------- |
|||
|
||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Ну сам проверял! UTF-8 стоит по умолчанию - кодирует некорректно, ставишь Unicode - все работает! Там все дело в количестве байтов символов. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ты мой код запускал? Правильно он передает или нет? -------------------- |
|||
|
||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Твой код не запускал. До своего додумался. Главное есть результат. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |