Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать код символа в Unicode? 
:(
    Опции темы
gif0
  Дата 4.2.2010, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.11.2009

Репутация: нет
Всего: нет



Как узнать код символа в Unicode?
PM MAIL   Вверх
jonie
Дата 4.2.2010, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



в каком конкретно Unicode ? (какая кодирвока юникод вас интеерсует) ?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
gif0
  Дата 4.2.2010, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.11.2009

Репутация: нет
Всего: нет



jonie, я не знаю. Если вы имеете в виду, какой язык мне нужен, то это китайский (это не шутка). Но вы, очевидно, имели в виду другое.

Дело в том, что я хочу написать простую программу, которая будет шифровать текст (русский или английский) таким образом, что бы каждый символ отображался иероглифом. Соответственно, мне нужно знать код символа, что бы "передвинуть" этот символ настолько, что бы он "достал" до китайского алфавита.  И еще нужно узнать, в каком диапазоне чисел находится китайский алфавит.

Кстати, я правильно понимаю, что тип char не поддерживает Unicode?
PM MAIL   Вверх
jonie
Дата 4.2.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата

Кстати, я правильно понимаю, что тип char не поддерживает Unicode? 
неправильно в общем случае.
Кодировок Unicode дофига и больше, есть например UCS-2, UTF-8, UTF-32.
Определитесь какая вам нужна для начала. Почитайте про юникод в какой-нибудь википедии или в первоисточнике unicode.org ....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
xvr
Дата 4.2.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(gif0 @ 4.2.2010,  02:01)
Как узнать код символа в Unicode?

http://www.unicode.org/charts/
Конкретно: http://www.unicode.org/charts/PDF/U4E00.pdf
(от 4E00 по 9FCB, всего 610 страниц иероглифов)



Это сообщение отредактировал(а) xvr - 4.2.2010, 12:50
PM MAIL   Вверх
gif0
Дата 6.2.2010, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.11.2009

Репутация: нет
Всего: нет



Цитата(jonie @ 4.2.2010,  12:40)
Цитата

Кстати, я правильно понимаю, что тип char не поддерживает Unicode? 
неправильно в общем случае.

Почему? Я думал, что char может содержать значения только из ASCII.
PM MAIL   Вверх
gif0
Дата 6.2.2010, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.11.2009

Репутация: нет
Всего: нет



Как число преобразовать в Unicode символ? Т.е. как число 22554 преобразовать в иероглиф? Использую C++ Builder 2010.
PM MAIL   Вверх
mes
Дата 6.2.2010, 05:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(gif0 @  6.2.2010,  02:27 Найти цитируемый пост)
Я думал, что char может содержать значения только из ASCII. 

От кодировки в принципе зависит только  вывод в символьном виде (ну и некоторые другие специфические операции, например замена заглавных букв прописными). Char же хранит код символа и ему плевать на кодировку.. Но следует учитывать, что поместиться туда (в char) могут только однобайтовые коды.


Это сообщение отредактировал(а) mes - 6.2.2010, 05:31


--------------------
PM MAIL WWW   Вверх
jonie
Дата 6.2.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата(gif0 @ 6.2.2010,  03:27)
Цитата(jonie @ 4.2.2010,  12:40)
Цитата

Кстати, я правильно понимаю, что тип char не поддерживает Unicode? 
неправильно в общем случае.

Почему? Я думал, что char может содержать значения только из ASCII.

тебе наврали. Вот например char z='Z'; - чем не символ в UTF-8 ?
Если вы нам так и не раскажите о той кодировке которая вам нужна, то мы вам не поможем ни с каким преобразованием. Учите матчасть, перед тем как задавать вопросы...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
xvr
Дата 6.2.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(gif0 @ 6.2.2010,  04:24)
Как число преобразовать в Unicode символ? Т.е. как число 22554 преобразовать в иероглиф? 

Код

wchar_t symbol=22554;

Цитата

Использую C++ Builder 2010.

Код

wchar_t my_string[]={22554,0);
AnsiString s(my_string);


PM MAIL   Вверх
gif0
Дата 7.2.2010, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.11.2009

Репутация: нет
Всего: нет



Программу я написал, но возникла проблема. После того как я зашифровал, а потом дешифровал текст, в Memo этот текст отображается с новыми переносами строки. Не буду многословным, смотрите скрины.

Первоначальное состояние текста:
user posted image

После шифрования и дешифрования:
user posted image

Пожалуйста, помогите решить эту проблему.

Вот исходник класса, который занимается шифрованием/дешифрованием:

Код

class Cryptographer {
    public:
        static void Encryption(TStringList * list, UnicodeString key) {
            if (key == "") {
                return;
            }
            UnicodeString str;
            for (int i = 0; i < list->Count; i++) {
                str = list->Strings[i];
                for (int j = 1, k = key.Length(); j <= list->Strings[i].Length(); j++, k--) {
                    if (k == 0)
                    {
                        k = key.Length();
                    }
                    wchar_t symbol = int(str[j]) + int(key[k]);
                    str[j] = symbol;
                }
                list->Strings[i] = str;
            }
        }
        static void Decoding(TStringList *list, UnicodeString key) {
            if (key == "") {
                return;
            }
            UnicodeString str;
            for (int i = 0; i < list->Count; i++) {
                str = list->Strings[i];
                for (int j = 1, k = key.Length(); j <= list->Strings[i].Length(); j++, k--) {
                    if (k == 0)
                    {
                        k = key.Length();
                    }
                    wchar_t symbol = int(str[j]) - int(key[k]);
                    str[j] = symbol;
                }
                list->Strings[i] = str;
            }
        }
};


Вот функция, которая работает с этим классом:

Код

void TMainForm::EncryptOrDecrypt(int my_switch)
{
    if (my_switch != 0 && my_switch != 1) {
        return;
    }
    TStringList * list = new TStringList;
    list->AddStrings(MainMemo->Lines);
    wchar_t str[]={29408,30400,0};
    UnicodeString pass = str;

    if (my_switch == 0) {
        Cryptographer::Encryption(list, pass);
    }
    else {
        Cryptographer::Decoding(list, pass);
    }

    MainMemo->Clear();
    MainMemo->Lines->AddStrings(list);
    delete list;
}


Это сообщение отредактировал(а) gif0 - 7.2.2010, 06:44
PM MAIL   Вверх
xvr
Дата 7.2.2010, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Есть предположение, что поскольку кодируемый текст не является чистым ASCII (русская кодовая страница в Unicode начинается далеко не с 0), то в результате сложения кода с символом пароля могли появится Unicode символы переносов строк. Хотя в этом случае какие то буквы должны были быть съеденными.
Попробуй кодировать не построчно, а весь текст целиком (проперть Text у Memo)

PM MAIL   Вверх
gif0
Дата 7.2.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.11.2009

Репутация: нет
Всего: нет



xvr, спасибо, но проблема уже решена: http://forum.vingrad.ru/forum/topic-290557...y2090832/0.html
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0884 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.