Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение "культуры" для TextBox  (Прочитано 7903 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ezus
Опытный

il
Offline Offline

« : 22-11-2010 16:46 » 

Добрый день.

Искал, но так и не нашел (наверно плохо искал) ответ на следующий вопрос:

У меня есть список книг на разных языках, естественно, язык конкретной книги мне известен.

1. Как мне вывести по очереди названия книг на разных языках в один TextBox?
2. Можно ли задать разные языки для разных колонок  ListBox?
3. А может можно определить разные языки для разных ячеек ListBox?

Где об этом можно почитать?

Спасибо.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-11-2010 18:05 » 

ezus, нет никаких препятствий использовать строки на разных языках. Благо современные системы работают с Unicode. Главное, чтобы символы, соответствующие твоим языкам, оказались в системном шрифте. Обычно трудности возникают с восточными языками и для этого требуется устанавливать шрифты с более широкой поддержкой Unicode, чем штатный.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 22-11-2010 18:40 » 

RXL, с языками, у которых другое направление текста, будут осложнения. И если надписи в одну строчку достаточно выровнять по правому краю, то надписи во много строк, которые должны форматироваться в абзац, будут выводиться в обратном порядке строк (т.е. начало абзаца окажется в конце string, поэтому в последней строке при выводе на экран).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
ezus
Опытный

il
Offline Offline

« Ответ #3 : 23-11-2010 06:09 » 

Спасибо.

Я уже понял в чем моя ошибка - я мыслил категориями С++ и ASCII.
Работая только внутри платформы, эта проблема просто не встает.

Дело в том, что исходный файл у меня в  ASCII. Поэтому задача изменяется на: выполнить конверсию ASCII в UTF8.

Причем код придется писать самому, т.к. структура файла не совсем регулярная.

Мой вопрос изменился на:
Какие в C# возможны пути перевода строки из ASCII в UTF8?

Спасибо.
Записан
yudjin
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #4 : 23-11-2010 09:03 » 

Код:
        
private string ConvertAsciiToUnicode(string theAsciiString)
        {
            // Создаем две разных кодировки
            Encoding aAsciiEncoding = Encoding.ASCII;
            Encoding aUnicodeEncoding = Encoding.Unicode;

            // Конвертируем string в byte[].
            byte[] aAsciiBytes = aAsciiEncoding.GetBytes(theAsciiString);

            // Конвертируем из ASCII в Unicode
            byte[] aUnicodeBytes = Encoding.Convert(aAsciiEncoding, aUnicodeEncoding,  aAsciiBytes);

            // Преобразуем новый массив byte[] в char[] и затем в string.
            char[] aUnicodeChars = new char[aUnicodeEncoding.GetCharCount(aUnicodeBytes, 0, aUnicodeBytes.Length)];
            aUnicodeEncoding.GetChars(aUnicodeBytes, 0, aUnicodeBytes.Length, aUnicodeChars, 0);
            string aUnicodeString = new string(aUnicodeChars);
            return aUnicodeString;
        }
В вашем случае нужно использовать свойство Encoding.UTF8 вместо Encoding.Unicode
Записан
ezus
Опытный

il
Offline Offline

« Ответ #5 : 23-11-2010 09:34 » new

Большущее СПАСИБО.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines