Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс дек 17, 2017 11:17 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 95 сообщений ]  На страницу Пред. 13 4 5 6 7 След.
Автор Сообщение
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:13 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
CleverMouse
mingw gcc utf8 не умеет. L"" строки кодируются в utf16.


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:25 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
А просто "строка в UTF-8", если файл закодирован в UTF-8? Ему не пофиг, что там внутри кавычек?

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:41 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Цитата:
Ему не пофиг, что там внутри кавычек?
Не совсем. Но всё решаемо. По умолчанию gcc ожидает UTF-8. Если это не utf8 нужен ключ. Например для L"Привет мир" ключ -finput-charset=CP1251, если файл в Win кодировке для кириллицы.
-fwide-exec-charset=charset установит во что будут перекодированы L"" строки.


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:43 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
А зачем вообще использовать L"...", если для UTF-8 речь идёт о просто "..."?

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:43 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Мне не нравится UTF-8 тем, что это кодировка с переменной длиной символа. Любая операция со строками сильно усложняется. Лучше сразу UTF-32.


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:45 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
CleverMouse писал(а):
А зачем вообще использовать L"...", если для UTF-8 речь идёт о просто "..."?
А скомпилируется, если символы не влезают в char ?
Я в этом сомневаюсь.


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:54 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Консоль mingw64 под виндой: всё в UTF-8
Код:
$ cat 1.c
#include <stdio.h>

int main()
{
        static const char str[] = "Здравствуй, мир!";
        FILE* f = fopen("qq.txt", "wb");
        if (f) {
                fwrite(str, sizeof(str), 1, f);
                fclose(f);
        }
        return 0;
}
$ gcc 1.c && ./a
$ cat qq.txt
Здравствуй, мир!

Все файлы - в UTF-8.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 7:57 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
А UTF-16 - кодировка с длиной символа, которая иногда переменная. Это ещё хуже.
UTF-32 - вещь в принципе хорошая, но с ней мало кто умеет работать. Скопировать набор байт от одной кавычки до другой из исходника в бинарник могут более-менее все компиляторы, а вот перегонять туда-сюда - удовольствия мало.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 8:14 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Проверил, получается так:
обычная строка "" конвертируется в -fexec-charset=utf-8
L"" строка в -fwide-exec-charset=utf-16


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 8:20 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Я попробовала пересохранить вышеупомянутый 1.c в cp1251 и в cp866. gcc молча проглотил оба варианта, qq.txt соответственно оказался в cp1251 и в cp866.
Код:
$ gcc --version
gcc.exe (Rev2, Built by MSYS2 project) 6.2.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 8:29 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 269
CleverMouse писал(а):
Я предлагаю считать, что для PE-приложений абсолютно всё в UTF-8 без всяких маркеров - вход/выход системных функций 2,4,70,что-у-нас-там-ещё-принимает-строки, argv[0], все библиотеки. Иначе откуда, скажем, box_lib может узнать, хочет приложение строку в cp866 или в utf-8? Делать флаги для всех-всех-всех библиотек - означает дикие метастазы legacy по всей системе.

В бокс-либ есть битик для этого в цвете. Он передается функции 4 обычно без изменений.

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

Все поломать и переписать в UTF8 ради кого? Кому нужна эта универсальность ?

Начинать по любому надо с поддержки конверсий ядром или системной библиотекой. А то в newlib своя трансляция, в файловых система своя, в функциях вывода на экран - хз, тоже отдельная?
Кто сказал что они совпадают?


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 8:55 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
CleverMouse писал(а):
Я попробовала пересохранить вышеупомянутый 1.c в cp1251 и в cp866. gcc молча проглотил оба варианта, qq.txt соответственно оказался в cp1251 и в cp866.
У меня не получалось
Цитата:
error: converting to execution character set: Illegal byte sequence
wprintf(L"%S",L"Hello World UTF-16! Привет мир\n");


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 8:56 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Ещё раз, а L""-то зачем? Почему не обычный printf с UTF-8?

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 9:13 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
CleverMouse писал(а):
Ещё раз, а L""-то зачем? Почему не обычный printf с UTF-8?

Обычный printf UTF-8 не понимает. Здесь wprintf нужен.


Вернуться к началу
 Заголовок сообщения: Re: C-- Sphinx Compiler
СообщениеДобавлено: Чт ноя 17, 2016 9:14 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1232
Siemargl писал(а):
Все поломать и переписать в UTF8 ради кого? Кому нужна эта универсальность ?


How about everybody who does not use CP866 or CP1251?

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 95 сообщений ]  На страницу Пред. 13 4 5 6 7 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB