Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кириллица

249
16 декабря 2004 года
DissDoc
639 / / 01.10.2004
Создал проект на VC Win32Application... Проблема вот в чем - как сделать так чтобы в 32-битном окне читалась кириллица?
249
16 декабря 2004 года
DissDoc
639 / / 01.10.2004
Может программно кодировку менять? тогда вопрос - как ее менять?
259
16 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by DissDoc
Может программно кодировку менять? тогда вопрос - как ее менять?


Я что-то не въезжаю. Есть шрифты TTF. Выбираешь с кирилицей и выводишь.

249
16 декабря 2004 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by AlexandrVSmirno

Я что-то не въезжаю. Есть шрифты TTF. Выбираешь с кирилицей и выводишь.



Слушай, я чего-то недопонимаю... Мы сейчас про одно и тоже говорим? Я имел ввиду консоль(просто ее как таковой уже не существует, только эмулятор 32-битный). Именно в консоле когда с помощью printf выводить русский текст, то в консоле получаются непонятные значки... Как это полечить? Если можно код продемонстрировать... ))))

259
16 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by DissDoc


Слушай, я чего-то недопонимаю... Мы сейчас про одно и тоже говорим? Я имел ввиду консоль(просто ее как таковой уже не существует, только эмулятор 32-битный). Именно в консоле когда с помощью printf выводить русский текст, то в консоле получаются непонятные значки... Как это полечить? Если можно код продемонстрировать... ))))



Я на VC не кодю,но вот из Win32 SDK:
[COLOR=blue]
A locale is a collection of language-related, user preference information represented as a list of values. Each system has at least one installed locale and usually has many locales from which the user may choose. Each locale has a unique locale identifier (LCID), a 32-bit value that consists in part of a language identifier. The language identifier is a standard international numeric abbreviation for a country or geographical region.

The system assigns a locale to each thread. Initially, the system assigns the system default locale to the thread. This default locale is set by the user when the system is installed or through the International applet of the Control Panel. If a thread is run in a process belonging to a user, the system assigns the user default locale to the thread. An application can override either default by using the the SetThreadLocale function to explicitly set the locale for a thread.

There are two predefined locale identifiers: LOCALE_SYSTEM_DEFAULT, which identifies the system default locale, and LOCALE_USER_DEFAULT, which identifies the locale of the current user. An application can retrieve the current locale identifiers by using the GetSystemDefaultLCID and GetUserDefaultLCID functions. Similarly, an application can retrieve the current language identifiers by using the GetSystemDefaultLangID and GetUserDefaultLangID functions.

An application can retrieve specific information about any available language or locale. This can be important for handling language- and locale-specific strings. An application can retrieve information about a locale by using the GetLocaleInfo function. Each element of locale information has a unique LCTYPE value that identifies a specific information type. Applications use these values to retrieve the information they need.
All LCTYPE values are mutually-exclusive, so only one type of information can be retrieved at a time. An exception is the LOCALE_NOUSEROVERRIDE which can be used to bypasses user overrides and retrieve the system default values for the requested locale.

Locale information is always stored and manipulated as a null-terminated string. No binary data is allowed; any numeric values must be specified as text. Each type of information has a particular format. Also, several of types are linked together, such that changing one changes the value of the other as well.
Although a given locale identifier may be supported, it is not available for use by an application unless it is also installed. [/COLOR]

249
16 декабря 2004 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by AlexandrVSmirno


Я на VC не кодю,но вот из Win32 SDK:



Нее, Вин32 не подходит... мне кажется можно как-то проще.. Просто на Java обходят имеено программно изменяя кодировку. Вот я и хочу в сях аналогию реализовать.

259
16 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by DissDoc


Нее, Вин32 не подходит... мне кажется можно как-то проще.. Просто на Java обходят имеено программно изменяя кодировку. Вот я и хочу в сях аналогию реализовать.



Ну так создай свой класс. В нем сделай два метода GetLocale() и SetLocale(Locale* loc). А в нутри них вызывай функции Win32 GetUserDefaultLCID и SetThreadLocale соответсвенно.

Код:
class myLocale
{
  public:
    LCID _Locale;
    BOOL SetLocale(LCID pLoc);
    LCID GetLocale();
};

BOOL myLocale::SetLocale(LCID pLOc) {
   return SetThreadLocale(pLoc);
}

LCID myLocale::GetLocale() {
   return GetThreadLocale();
}
10
16 декабря 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by DissDoc
Создал проект на VC Win32Application... Проблема вот в чем - как сделать так чтобы в 32-битном окне читалась кириллица?


Не слушай их всех - они гонят. Не могут понять одну простую вещь - надо переводить строки в OEM-кодировку. Для этого служат API-функции CharToOem и CharToOemBuf.

Есть еще такая фишка, как SetFileApiToOem. Только вот сам ее никогда не использовал, поэтому не знаю, может ли она помочь в твоем случае.

8.9K
17 декабря 2004 года
Siro
8 / / 24.11.2004
Цитата:
Originally posted by DissDoc


Слушай, я чего-то недопонимаю... Мы сейчас про одно и тоже говорим? Я имел ввиду консоль(просто ее как таковой уже не существует, только эмулятор 32-битный). Именно в консоле когда с помощью printf выводить русский текст, то в консоле получаются непонятные значки... Как это полечить? Если можно код продемонстрировать... ))))


Да испоьзуй CharToOem(...) (параметров не помню посмотри в хелпе). Короче она принимает два массива: один массив содержит текст который нужно перевести во второй массив этот текст будет записан. Потом ты второй массив выводишь на экран своим printf

259
17 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by smartsoft

Не слушай их всех - они гонят. Не могут понять одну простую вещь - надо переводить строки в OEM-кодировку. Для этого служат API-функции CharToOem и CharToOemBuf.

Есть еще такая фишка, как SetFileApiToOem. Только вот сам ее никогда не использовал, поэтому не знаю, может ли она помочь в твоем случае.


Не обязательно. Тот же фар умеет и в кодепаге 1251 выводить, а не только 866.

249
18 декабря 2004 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by Siro

Да испоьзуй CharToOem(...) (параметров не помню посмотри в хелпе). Короче она принимает два массива: один массив содержит текст который нужно перевести во второй массив этот текст будет записан. Потом ты второй массив выводишь на экран своим printf



А тогда какую библиотеку нужно подключать? Я в МСДН найти никак не могу.

10
18 декабря 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by DissDoc
А тогда какую библиотеку нужно подключать? Я в МСДН найти никак не могу.


А online MSDN зачем?

10
18 декабря 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by AlexandrVSmirno
Тот же фар умеет и в кодепаге 1251 выводить, а не только 866.


Так в том-то и дело, что Far выполняет перекодирование, а на экране ты все равно видишь 866.

249
17 марта 2005 года
DissDoc
639 / / 01.10.2004
Короче, я никак понять не могу! Кто-нить знает как в консоле вывести русские буквы (кириллица)?
368
17 марта 2005 года
rostyslav
629 / / 13.07.2004
Код:
#include "stdafx.h"
#include "windows.h"
#include "conio.h"

int main(int argc, char* argv[])
{
  char buf[64];
  CharToOem("Привет!\n", buf);
  printf(buf);
  getch();
  return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог