Иногда в программе необходимо задействовать волшебные константы __FILE__, __DIR__, функцию getenv() и др., которые возвращают строку в кодировке отличной от UTF-8. В операционных системах Windows разных версий это не всегда может быть именно Windows-1251 (CP1251), из-за чего могут возникнуть трудности при работе с, например, кириллицей, когда программа располагается в директории с русскими символами в пути. Чтобы этого не возникло, можно воспользоваться таким решением:

if(substr(PHP_OS, 0, 3) == 'WIN') {
    $codepage = 'Windows-' . trim(strstr(setlocale(LC_CTYPE, 0), '.'), '.');
    QMessageBox::warning(null, '', $codepage); // возвратит используемую кодировку Windows
}

Здесь мы определяем используемую системную локаль строковых функций и выводим её в текстовом сообщении. Этим кодом можно воспользоваться для работы с функцией iconv():

if(substr(PHP_OS, 0, 3) == 'WIN') {
    $codepage = 'Windows-' . trim(strstr(setlocale(LC_CTYPE, 0), '.'), '.');
    QMessageBox::warning(null, '', iconv($codepage, 'UTF-8', __FILE__));
}

В данном примере мы преобразуем строку из используемой системой кодировки в кодировку UTF-8. 

comments powered by HyperComments