Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
#1

C и UTF-8 - C++

03.08.2011, 09:08. Просмотров 1085. Ответов 9
Метки нет (Все метки)

Как для приложения на C установить кодировку UTF-8? Чтобы символы на кирилице выводились и вводились нормально.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2011, 09:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C и UTF-8 (C++):

Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 - C++
Собсно сабж.

Преобразовние Utf-16 <=> Utf-8 - C++
Вопрос казалось бы простой, но нормально ответа на него я пока не нашел. Нужно вывести строчку юникода(UTF-16) в файл с изменением...

Кириллица в UTF-8 - C++
Отдельно задам ранее возникший вопрос. При работе с однобайтовой кодировкой (например, в старом борланде 3.1, где, если я правильно понял,...

Парсер, utf-8 - C++
Помогите пожалуйста разобраться с кодировкой. Прочитал немного статей и литературы, но полного понимание ситуации с кодировкой так и нет....

Кириллицу в UTF-8 - C++
К примеру, у нас есть строка &quot;тест&quot;, нужно из него получить строку D1%82%D0%B5%D1%81%D1%82 для запроса

C++, UTF-8 и совместимость - C++
Имеется некоторая программа (шутка, прога ещё в проекте). Она по сути является одним из кусков системы общения (пишу себе псевдоИИ, но не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
03.08.2011, 09:43  [ТС] #3
А если символ на кириллице вшит в код? Например
C
1
2
3
4
5
char ch;
...
if (ch=='э') {
...
}
zalogic
146 / 142 / 2
Регистрация: 12.12.2010
Сообщений: 269
03.08.2011, 10:22 #4
http://www.cplusplus.com/reference/c...dlib/mbstowcs/
http://lord-n.narod.ru/download/book...8/mbstowcs.htm
http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx

это смотрел?
-=ЮрА=-
Заблокирован
Автор FAQ
03.08.2011, 10:28 #5
N
Цитата Сообщение от i.c Посмотреть сообщение
char ch;
...
if (ch=='э') {
...
}
Можно как вариант создать хедер rus.h и подключить к проекту, вот листинг
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef RUS_H
#define RUS_H
#include <iostream.h>
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='в••')
            stream<<char(241);
        else if(*ps=='и')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
#endif
zalogic
146 / 142 / 2
Регистрация: 12.12.2010
Сообщений: 269
03.08.2011, 10:48 #6
а вообще вот.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
char ch = 'П'; char ch1 = 'р'; char ch2 = 'и'; char ch3 = 'в';
 
int i;
printf("%c", ch+192);
printf("%c", ch1+192);
printf("%c", ch2+192);
printf("%c", ch3+192);
ch = getch();
return 0;
}
это на билдере.

А так смещение если задавать 192 , то норм. Единственно что между п и р промежуток.
Ну выходит со смещением просто поколдовать.

Если не секрет в какой среде работаете?
Миниатюры
C и UTF-8  
Изображения
 
-=ЮрА=-
Заблокирован
Автор FAQ
03.08.2011, 11:05 #7
Хочу поправиться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef RUS_H
#define RUS_H
#include <iostream.h>
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
#endif
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
03.08.2011, 17:25  [ТС] #8
Цитата Сообщение от zalogic Посмотреть сообщение
Если не секрет в какой среде работаете?
Линуксовская консоль+gedit+gcc.

Добавлено через 1 минуту
main.c:3:19: фатальная ошибка: tchar.h: Нет такого файла или каталога
Компиляция прервана.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,606
03.08.2011, 17:27 #9
Цитата Сообщение от i.c Посмотреть сообщение
Линуксовская консоль+gedit.
недавно было - посмотрите...
Fedis
03.08.2011, 17:31  [ТС]     C и UTF-8
  #10

Не по теме:

Собственно, пишу только на Java (а там Unicode из коробки), но сейчас потребовался нативный код.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2011, 17:31
Привет! Вот еще темы с ответами:

C++, UTF-8, char - C++
Приветсвую всех. Правильно ли я рассуждаю: 1) Если мне нужно использовать символы юникода в программе (самые немыслимые иероглифы,...

From UTF-8 to UNICODE - C++
здравствуйте!! у меня вот какой вопрос! Как сделать преобразование UTF-8 и Unicode? во общем моя программа считывает данные с базы( база...

Libiconv конвертирование в UTF-8? - C++
Странное поведение консоли виндовс с UTF-8 Кто имел дело с libiconv есть ли у вас предположения почему так ? С помощью других кодировок...

из UTF-8 в Windows-1251 - C++
Как строку в формате UTF-8 перекодировать в Windows-1251? Добавлено через 16 минут Существуют ли какие-нибудь функции?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.08.2011, 17:31
Ответ Создать тему
Опции темы

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