Проблема с кодировкой

 

Помогите разобраться:

string symbol=StringSetChar("1",0,136);

MessageBox(symbol);
На выходе получаю знак вопроса, вместо символа евро. Почему и как исправить?
 

Просто берем знак € и вставляем его куда надо:

MessageBox("€");

Или вот так:

string s=CharToStr(136);
MessageBox(s);
 
Dmitry Fedoseev:

Просто берем знак € и вставляем его куда надо:

Или вот так:

Спасибо Дмитрий, приму к сведению. Но в данном случае, меня интересует именно то, почему на моём компьютере не нашлось символа для данного числового кода при данном вызове функции и как это исправить. Возможно я зря упростил свой вопрос до пары строчек, потому что на самом деле меня интересует вот этот код:

 string s, symbol = "s";
   for(int x = 0; x < 256; x++)
    {
      symbol = StringSetChar(symbol, 0, x);
      s = s + x + " = " + symbol + " \t";
      if(x % 10 == 0)
          s = s + " \n";
    }
   MessageBox(s);

из вот этой статьи: https://www.mql5.com/ru/articles/1474

где у автора статьи для каждого числового кода выводятся свои символы, а у меня после 127 по 163 включительно идут сплошные вопросы, и я не понимаю почему.

p.s. Пытаюсь поглубже разобраться в теме кодировок, поэтому и цепляюсь за данные нюансы.

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

Строки: таблица символов ASCII и её использование
Строки: таблица символов ASCII и её использование
  • www.mql5.com
В этой статье мы детально рассмотрим таблицу символов ASCII и как ее можно использовать. Также мы рассмотрим несколько новых функций, принцип работы которых основан на специфике строения таблицы ASCII, и в конце создадим новую библиотеку, в которую включим эти функции. Они достаточно популярны в других языках программирования, но их нет среди...
 
Это было давно, а теперь вот так. Дело не в компьютере.
 
Dmitry Fedoseev:
Это было давно, а теперь вот так. Дело не в компьютере.

Хорошо, можете подсказать тогда почему вот этот код не работает?

   string report,symbol_char;

   for(uchar i=0; i<25; i++)
     {
      symbol_char=CharToString(i);

      report+=StringConcatenate(i," = ",symbol_char," \t");

      if(i%10==0) report=report+" \n";
     }
     
   Alert(report);
 
Вроде как от 0 до 32 нет отображаемых символов, это управляющие смиволы.
 

Но там вообще не выводятся символы,  даже если запустить цикл до 255.
В итоге выводится 0 =  и всё.

Что интересно, если для i сразу задать 1 вместо 0, то всё работает.

 
leon_17:

Но там вообще не выводятся символы,  даже если запустить цикл до 255.
В итоге выводится 0 =  и всё.

Что интересно, если для i сразу задать 1 вместо 0, то всё работает.

Все выводится. Не трогайте символы ниже 32-го.

Причина обращения: