Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Русские символы в VS .NET не читаются

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

zZZzzzZZ



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня в Microsoft Visual Studio .NET русские символы в откомпилированной программе отображаются краказяблами. Что делать?

Всего записей: 48 | Зарегистр. 05-04-2004 | Отправлено: 20:32 01-06-2004
Swappp

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zZZzzzZZ
А поподробнее. Для начала, какой язык?

Всего записей: 1716 | Зарегистр. 02-11-2001 | Отправлено: 21:03 01-06-2004
zZZzzzZZ



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Swappp
Язык C++ .NET . Но и с другими языками (C#,  J#, VB .NET) та же хрень.

Всего записей: 48 | Зарегистр. 05-04-2004 | Отправлено: 22:18 01-06-2004
Swappp

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zZZzzzZZ
Может код приведешь?

Всего записей: 1716 | Зарегистр. 02-11-2001 | Отправлено: 01:57 02-06-2004
zZZzzzZZ



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Swappp
Код... Да любой код, даже банальный "Здравствуй Мир"
Думаю исходник не надо приводить

Всего записей: 48 | Зарегистр. 05-04-2004 | Отправлено: 08:40 02-06-2004
mtksl

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zZZzzzZZ
1. если пишешь консольную программу, то оно понятно - в консоль текст выводится в 866 кодировке, а исходники редактируются в стандартной виндовой 1251.
 
2. если приложение гуёвое, а текст - в ресурсах, то укажи в этих самых ресурсах, что язык русский - для диалогов, таблиц строк, данных о версии и т.д...

Всего записей: 12 | Зарегистр. 22-08-2003 | Отправлено: 11:37 02-06-2004
zZZzzzZZ



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mtksl
А если консольная программа то как сделать так что бы символы кодировались как надо?

Всего записей: 48 | Зарегистр. 05-04-2004 | Отправлено: 13:56 02-06-2004
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zZZzzzZZ
Либо пиши в Уникоде, либо есть функция CharToOem.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 07:33 03-06-2004
vito333



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в настройках проекта надо поставить, что ресурсы - русские - 0х419 по-мом ...

Всего записей: 3319 | Зарегистр. 13-05-2002 | Отправлено: 11:22 04-06-2004
mtksl

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zZZzzzZZ
к ответу Mickey_from_nsk можно ещё добавить редактирование исходников в досовской кодировке.

Всего записей: 12 | Зарегистр. 22-08-2003 | Отправлено: 12:58 06-06-2004
vito333



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"

Всего записей: 3319 | Зарегистр. 13-05-2002 | Отправлено: 17:00 06-06-2004
mtksl

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vito333
не, это ж не фотошоп, чтобы такие дела делать.

Всего записей: 12 | Зарегистр. 22-08-2003 | Отправлено: 18:07 06-06-2004
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zZZzzzZZ
Было у меня такое. На англ корпор. винден откомпилировал - все ОК. затем нужно было работать на русской винде - откомпилировал на ней, заменив что-то в ресурсах и все - все надписи из ресурсов на непонятной кодировке стали, причем в спмом VS все нормально. Помучился я немного, (чуть было не переписал все заново) потом сохранил все ресурсы и перекодировал файл, где они находились строковые ресурсы(насколько помню было так) и с тех пор все ОК.

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 10:55 08-06-2004
SkaBoy1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vito333 а где в настройках проекта ставить кодировку? (VS .NET 2005)
 
помогите кто-нибудь, не могу решить эту проблему с кодировкой в консольных приложениях, очень надо, в нете искал, ничего не нашёл
 
 
Добавлено:
Up

Всего записей: 20 | Зарегистр. 15-07-2006 | Отправлено: 17:14 27-09-2006 | Исправлено: SkaBoy1, 21:15 27-09-2006
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А если попробовать SetConsoleOutputCP(1251)? Только шрифт в консоли должен быть не растровый, а трутайп. Луцида, например.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 21:17 28-09-2006
SkaBoy1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
решил проблему вот этой строкой setlocale(LC_ALL, "rus");

Всего записей: 20 | Зарегистр. 15-07-2006 | Отправлено: 01:27 29-09-2006
nE0sIghT

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот 2 функции для перекодирования cp866 -> cp1251 и обратно:

Код:
#define ord(chr) ((int)chr < 0 ? (256 + (int)chr) : (int)chr)
 
char *cp866to1251(char *str)
{
    char *result = str;
 
    for(int i = 0; *result; i++, result++)
    {
        if((ord(*result) > 127 && ord(*result) < 176))
            *result += 64;
        else if((ord(*result) > 223 && ord(*result) < 240))
            *result += 16;
        else if(ord(*result) == 0xF0)
            *result -= 72;
        else if(ord(*result) == 0xF1)
            *result -= 57;
    }
 
    return str;
}
 
char *cp1251to866(char *str)
{
    char *result = str;
 
    for(int i = 0; *result; i++, result++)
    {
        if((ord(*result) > 191 && ord(*result) < 240))
            *result -= 64;
        else if((ord(*result) > 239 && ord(*result) < 256))
            *result -= 16;
        else if(ord(*result) == 0xA8)
            *result += 72;
        else if(ord(*result) == 0xB8)
            *result += 57;
    }
 
    return str;
}

Всего записей: 9 | Зарегистр. 02-06-2006 | Отправлено: 18:59 24-10-2006
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема уже обсуждалась.
http://forum.ru-board.com/topic.cgi?forum=33&topic=7514#1

Всего записей: 2025 | Зарегистр. 02-09-2005 | Отправлено: 21:04 24-10-2006
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Русские символы в VS .NET не читаются


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru