Кодировка в VS 2017

Проблема такова: ставлю setlocale, SetConsoleCP() c 1251 и 866, но ничего не помогает — все равно выводит ну такое вот: ╨е╨╡╨╗╨╡, вместо кириллицы. Если ставить setlocale(LC_ALL, «Russian»), то по юникоду выводит символ «\u2568» вместо предполагаемого «\u0425». И да, шрифты в консоли менять тоже бес толку. Есть хоть какие-нибудь варианты, откуда такой разброс в кодировке?

равно выводит ну такое вот: ╨е╨╡╨╗╨╡, вместо кириллицы.

Кириллица забита в исходнике?
Исходник в какой кодировке?
Если в utf-8, то перекодируйте в cp1251.

Для mingw можно воспользоваться iconv:

#include <cstdio>
#include <windows.h>
#include <iconv.h>
#include <clocale>
const char *p = u8"bg! Моя твоя не понимаит! Fuck! Ха!";

void utf8_to_cp1251(char const * in, char * out, size_t out_size){
    size_t in_size = strlen(in);
    char *p_in = const_cast<char*>(in);
    out[0] = 0;
    iconv_t cd = iconv_open("CP1251", "UTF-8");
    iconv(cd, &p_in, &in_size, &out, &out_size);
    iconv_close(cd);
}


int main()
{
    char buffer[1024];
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    utf8_to_cp1251(p, buffer, 1024);
    printf("%s", buffer);
}

только buffer здесь для примера взят жестко на 1024 байта.

Для работы с std::string (опять же mingw + iconv):

std::string utf8_to_cp1251(char const * in){
    size_t in_size = strlen(in);
    size_t out_size = in_size + 1;
    std::string out;
    out.resize(out_size);
    out[0] = 0;
    char *p_in = const_cast<char*>(in);
    char *p_out = const_cast<char*>(out.data());    
    iconv_t cd = iconv_open("CP1251", "UTF-8");
    iconv(cd, &p_in, &in_size, &p_out, &out_size);
    iconv_close(cd);
    out.resize(strlen(out.data()));
    return out;
}

MinGW — Minimalist GNU for Windows.
Содержит в себе набор компиляторов GNU,
портированный на платформу Windows.

libiconv — библиотека GNU для работы с
Unicode и различными кодировками.

Здравствуйте!
Я хочу кое-что узнать. Я, хотела бы проверку пароля из функций привязать к какой-то программе. Я знаю, это возможно. Но такая «защита» простейшим образом ломается даже ребёнком. Как сделать защиту более надёжной? Можно ли подсказать ссылку, где обьясняется, как делаются подобные вещи?
Заранее спасибо!
Indicate.

Как сделать защиту более надёжной?

По большому счету — никак.
Любую Вашу защиту вырежут или обойдут.

Вам же, если интересуют методы защиты
нужно основательно изучать
информационную безопасность, криптографию,
ассемблер, работу с железом, системное программирование,
разработку драйверов и т.д. и смежные темы.

Простая проверка даже сложно
зашифрованного или хешированного
пароля ломается за минуты или секунды,
здесь необходимы более сложные и
запутанные механизмы, но они лишь
отсрочат гибель системы защиты.
Заметили, что многие программы уезжают
в web в виде online-сервисов?
Так их можно защитить надежнее.

Здравствуйте!
Я хочу кое-что узнать. Я, хотела бы проверку пароля из функций привязать к какой-то программе. Я знаю, это возможно. Но такая «защита» простейшим образом ломается даже ребёнком. Как сделать защиту более надёжной? Можно ли подсказать ссылку, где обьясняется, как делаются подобные вещи?
Заранее спасибо!
Indicate.

Любую защиту можно обойти.

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

Silis,
зависит от уровня развития в этой хитрости.

Я не считаю, что любую защиту можно сломать. Ведь есть и надёжные..

Silis,
разберёмся сами. Ведь в больших программах работает проверка на то, что программу купили, а не украли.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.