Не все символы ASCII перекодированы в wchar_t с помощью mbstowcs
Я посмотрел на несколько похожих вопросов, но не могу найти решение своей проблемы: я пытаюсь преобразовать символы из ASCII в широкие символы (Windows UTF16), чтобы напечатать их в окне (цель состоит в том, чтобы захватить пользовательские наборы символов для встроенного приложения, включая поддержку некоторых китайских языков)
Когда я использую mbstowcs, я получаю то, что хочу, за исключением двух строк между символами 0x70 и 0x8F (включены), которые, я считаю, должны соответствовать первым значениям многобайтовых символов.
Когда я использую mbstowcs, мой символ s[5] интерпретируется как UTF-8, который не распознает некоторые значения в качестве первых символов - я ожидал некоторых, но не так много, и мне нужны такие символы, как одинарные и двойные кавычки... Как заставить его быть понятым как обычный ASCII без изменения всего проекта?
Я также пытался с MultiByteToWideChar(CP_ACP, 0, s, -1, ws, 0); но тогда я всегда получаю один и тот же китайский иероглиф, что мне мало помогает...
Обратите внимание, что это тестовый код.
char s[5] = {0, 0, 0}; // I should really need only [2]
WCHAR ws[5];
SetTextAlign(hdc,TA_CENTER | TA_BASELINE);
for (int y = 0; y < 16 * 64; y += 64)
{
for (int x = 0; x < 16 * 64; x += 64)
{
mbstowcs(ws, s, 1);
// Missing two lines of characters in the middle
TextOutW (hdc, x+32, y+32, ws, 1);
// TextOutA (hdc, x+32, y+32, s, 1);
// Works fine but I need to handle multibyte characters
s[0]++;
}
}