Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Sep 20, 2019 11:53 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 121 posts ]  Go to page Previous 13 4 5 6 79 Next
Author Message
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:13 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
CleverMouse
mingw gcc utf8 не умеет. L"" строки кодируются в utf16.


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:25 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
А просто "строка в UTF-8", если файл закодирован в UTF-8? Ему не пофиг, что там внутри кавычек?

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:41 pm 
Offline
Kernel Developer

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:43 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
А зачем вообще использовать L"...", если для UTF-8 речь идёт о просто "..."?

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:43 pm 
Offline
Kernel Developer

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:45 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
CleverMouse wrote:
А зачем вообще использовать L"...", если для UTF-8 речь идёт о просто "..."?
А скомпилируется, если символы не влезают в char ?
Я в этом сомневаюсь.


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:54 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
Консоль mingw64 под виндой: всё в UTF-8
Code:
$ 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.

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 7:57 pm 
Offline
Kernel Developer
User avatar

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

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 8:14 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Проверил, получается так:
обычная строка "" конвертируется в -fexec-charset=utf-8
L"" строка в -fwide-exec-charset=utf-16


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 8:20 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
Я попробовала пересохранить вышеупомянутый 1.c в cp1251 и в cp866. gcc молча проглотил оба варианта, qq.txt соответственно оказался в cp1251 и в cp866.
Code:
$ 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.

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 8:29 pm 
Offline

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

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

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

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

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 8:55 pm 
Offline
Kernel Developer

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 8:56 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
Ещё раз, а L""-то зачем? Почему не обычный printf с UTF-8?

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 9:13 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
CleverMouse wrote:
Ещё раз, а L""-то зачем? Почему не обычный printf с UTF-8?

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


Top
   
 Post subject: Re: C-- Sphinx Compiler
PostPosted: Thu Nov 17, 2016 9:14 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1248
Siemargl wrote:
Все поломать и переписать в 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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 121 posts ]  Go to page Previous 13 4 5 6 79 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited