Как я могу встроить unicode строковые константы в исходный файл?

Мне никогда не удавалось заставить это работать, выполняя итерацию вперед через список errorEvent в моем автоматизированном тестовом коде, но он РАБОТАЕТ, когда итерация назад через список errorEvent.

Телефонный код:

            for (int i = eventViewer.GetErrorEventsCount() - 1; i >= 0; i--)
        {
            bResult = eventViewer.SelectMainEventViaErrorEvent(i);
            if (!bResult)
            {
                break;
            }

            System.Threading.Thread.Sleep(2000);
        }

Контрольный код:

        public bool SelectMainEventViaErrorEvent(int eventIdx)
    {
        bool bSuccess = false;
        DisableToolTips(true);

        errorEvents.Select(eventIdx);
        errorEvents.SelectedItem.DoubleClick();

        System.Threading.Thread.Sleep(1000);

        log.Info($"SelectMainEventViaErrorEvent({eventIdx}) selected error event = {errorEvents.SelectedItemText}");
        log.Info($"SelectMainEventViaErrorEvent({eventIdx}) selected main event = {mainEvents.SelectedItemText}");

        if (errorEvents.SelectedItemText == mainEvents.SelectedItemText)
        {
            bSuccess = true;
        }

        return bSuccess;
    }
10
задан jkp 14 January 2009 в 12:13
поделиться

2 ответа

Утомительный, но портативный путь состоит в том, чтобы создать Ваши строки с помощью числовых управляющих кодов. Например:

wchar_t *string = L"דונדארןמע";

становится:

wchar_t *string = "\x05d3\x05d5\x05e0\x05d3\x05d0\x05e8\x05df\x05de\x05e2";

Необходимо преобразовать все символы Unicode в числовые Escape. Тем путем Ваш исходный код становится независимым от кодирования.

Можно использовать сетевые инструменты для преобразования, такие как этот. Это производит формат Escape JavaScript \uXXXX, поэтому просто поиск и замена \u с \x получить формат C.

18
ответ дан 3 December 2019 в 15:22
поделиться

Необходимо сказать GCC который кодирование использования файла кодировать те символы в файл.

Используйте опцию -finput-charset=charset, например, -finput-charset=UTF-8. Затем необходимо сказать это о кодировании, используемом для тех строковых литералов во времени выполнения. Это определит значения wchar_t объектов в строках. Вы устанавливаете то использование кодирования -fwide-exec-charset=charset, например, -fwide-exec-charset=UTF-32. Остерегайтесь это размер кодирования (utf-32 нуждается в 32 битах, utf-16 нужны 16 битов), не должен превышать размер wchar_t использование gcc.

Можно скорректировать это. Та опция главным образом полезна для компиляции программ для wine, разработанный, чтобы быть совместимым с окнами. Опцию называют -fshort-wchar, и скорее всего затем будут 16 битов вместо 32 битов, который является его обычной шириной для gcc на Linux.

Те опции описаны более подробно в man gcc, gcc страница справочника.

11
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: