Кто-нибудь использует юникодные исходники
От: Sir-G  
Дата: 23.08.11 17:19
Оценка:
Опрос: кто-нибудь реально использует юникодные исходники?

Связанные вопросы далее.

Собственно проблему я в основном вижу в описании литералов вида L"русский текст" при ANSI исходнике. Приходится либо писать
1) коды символов через escape последовательности — муторно
2) #pragma setlocale (для Microsoft Visual Studio) — некрасиво
3) в рантайме переводить в юникод строки по заданной кодовой странице — тем более не айс

Visual Studio умеет компилировать некоторые виды юникодных исходников (кажется, UTF-8, UTF-16). На других компиляторах не проверял. =) И вообще, регулируется ли это стандартом?

На вскидку я вижу такие минусы юникодных исходников — не все редакторы поймут, а также скорее всего не все программы, которые смотрят File Difference это поймут (опять же не проверял).
Re: Кто-нибудь использует юникодные исходники
От: kpcb Россия  
Дата: 23.08.11 17:49
Оценка:
Здравствуйте, Sir-G, Вы писали:

SG>Опрос: кто-нибудь реально использует юникодные исходники?


Я использую. Т.к. есть исходник в ANSI открыть в XCode-e то вместо русских комментариев будет абракадабра
Re: Кто-нибудь использует юникодные исходники
От: 11molniev  
Дата: 23.08.11 17:56
Оценка: 6 (2) +1
Здравствуйте, Sir-G, Вы писали:

SG>Опрос: кто-нибудь реально использует юникодные исходники?

Да

SG>Связанные вопросы далее.

SG>Собственно проблему я в основном вижу в описании литералов вида L"русский текст" при ANSI исходнике
-отлично перекодируються в юникод, вы высасали из пальца несуществующую проблему.
SG>. Приходится либо писать
SG>1) коды символов через escape последовательности — муторно
SG>2) #pragma setlocale (для Microsoft Visual Studio) — некрасиво
SG>3) в рантайме переводить в юникод строки по заданной кодовой странице — тем более не айс
WTF? Усе работает и так. Если пользуетесь VS — попробуйте вставить к примеру китайский иероглиф — сама предложит перекодировать файл в unicode.
Насчет перевода строк в рантайме в юникод вообще не понял. Какой смысл расширять кодовую таблицу если оригинальные строки закодированы в меньшей?

SG>Visual Studio умеет компилировать некоторые виды юникодных исходников (кажется, UTF-8, UTF-16). На других компиляторах не проверял. =) И вообще, регулируется ли это стандартом?

Регулируеться компилятором. Студия отлично работает с utf-8 и другими вариациями юникода — если сможет распознать. И с ansi и со всеми иными вариациями вроде ANCI CP 1251, в соответствии с системными настройками;
GCC по дефолту дружит с utf-8. Но через параметры можно указать любую другую кодировку что для исходников, что для строк выходных файлов.

SG>На вскидку я вижу такие минусы юникодных исходников — не все редакторы поймут, а также скорее всего не все программы, которые смотрят File Difference это поймут (опять же не проверял).

Это какие редакторы не поймут? Даже notepad с unicod-ом дружит. И с File Defference проблем нет. Особенно для utf-8.

Вобщем никаких проблем с UTF-8 нет. Все работает.
Re[2]: Кто-нибудь использует юникодные исходники
От: Sir-G  
Дата: 23.08.11 18:38
Оценка:
Здравствуйте, 11molniev, Вы писали:

SG>>Собственно проблему я в основном вижу в описании литералов вида L"русский текст" при ANSI исходнике

1>-отлично перекодируються в юникод, вы высасали из пальца несуществующую проблему.
Эх, если бы... =) Перекодировка происходит по системной кодовой странице, которая на другой машине может быть английская. Я уж не говорю, что таким способом литералы на нескольких языках (например, еще французском) не написать в принципе.

1>WTF? Усе работает и так. Если пользуетесь VS — попробуйте вставить к примеру китайский иероглиф — сама предложит перекодировать файл в unicode.

Это я знаю, что он формат поменяет. Но именно этого я и боюсь. =) Поэтому и спросил, у кого опыт есть работы с юникод исходниками.

1>Насчет перевода строк в рантайме в юникод вообще не понял. Какой смысл расширять кодовую таблицу если оригинальные строки закодированы в меньшей?

А я не понял про расширение кодовой таблицы. Задача: сделать юникодную константу. Можно забить char-ную константу и номер кодовой страницы, и перевести в рантайме в юникод. Но этот способ не нравится, так как лишняя работа в рантайме.

SG>>На вскидку я вижу такие минусы юникодных исходников — не все редакторы поймут, а также скорее всего не все программы, которые смотрят File Difference это поймут (опять же не проверял).

1>Это какие редакторы не поймут? Даже notepad с unicod-ом дружит. И с File Defference проблем нет. Особенно для utf-8.
А вот такая проблема. По умолчанию новый файл делается в ANSI. Потом кто-то вставляет китайский иерголиф, файл перекодируется. После этого File Difference начинает глючить (по-моему, я даже видел такое).

1>Вобщем никаких проблем с UTF-8 нет. Все работает.

Это здорово! Но правильнее наверное сразу все файлы в проекте делать в UTF-8.
Re[3]: Кто-нибудь использует юникодные исходники
От: 11molniev  
Дата: 23.08.11 18:52
Оценка:
Здравствуйте, Sir-G, Вы писали:

SG>>>Собственно проблему я в основном вижу в описании литералов вида L"русский текст" при ANSI исходнике

1>>-отлично перекодируються в юникод, вы высасали из пальца несуществующую проблему.
SG>Эх, если бы... =) Перекодировка происходит по системной кодовой странице, которая на другой машине может быть английская. Я уж не говорю, что таким способом литералы на нескольких языках (например, еще французском) не написать в принципе.
unicode отлично работает. У меня английская винда и студия — и ниче так, работает. При нескольких языках сама в юникод перекодирует и все.

1>>WTF? Усе работает и так. Если пользуетесь VS — попробуйте вставить к примеру китайский иероглиф — сама предложит перекодировать файл в unicode.

SG>Это я знаю, что он формат поменяет. Но именно этого я и боюсь. =) Поэтому и спросил, у кого опыт есть работы с юникод исходниками.
студия с юникодными исходниками великолепно работает толи с 6 толи с 7 версии
касаемо unix-ов и utf8 — даже если компилировать доисторическим gcc без подержки unicode — кодировка сохраниться и система будет нормально с ней работать.

1>>Насчет перевода строк в рантайме в юникод вообще не понял. Какой смысл расширять кодовую таблицу если оригинальные строки закодированы в меньшей?

SG>А я не понял про расширение кодовой таблицы. Задача: сделать юникодную константу. Можно забить char-ную константу и номер кодовой страницы, и перевести в рантайме в юникод. Но этот способ не нравится, так как лишняя работа в рантайме.
можно просто задать юникодовую константу

SG>>>На вскидку я вижу такие минусы юникодных исходников — не все редакторы поймут, а также скорее всего не все программы, которые смотрят File Difference это поймут (опять же не проверял).

1>>Это какие редакторы не поймут? Даже notepad с unicod-ом дружит. И с File Defference проблем нет. Особенно для utf-8.
SG>А вот такая проблема. По умолчанию новый файл делается в ANSI. Потом кто-то вставляет китайский иерголиф, файл перекодируется. После этого File Difference начинает глючить (по-моему, я даже видел такое).
File Difference — Какую программы вы имеете в виду? Большинство отлично работает с utf-8

1>>Вобщем никаких проблем с UTF-8 нет. Все работает.

SG>Это здорово! Но правильнее наверное сразу все файлы в проекте делать в UTF-8.
Мне неизвестно о возможности настраивать кодировку для вновь создаваемых файлов

В общем, если сумировать:
Можно спокойно перекодировать исходники в utf8 — никаких косяков не будет ни в Windows & VS, не в Linux/xBSD & gcc. Единственный всплывающий при этом аспект в том что в win строки должны быть wchat_t & L"", а в lin char & "". Со всеми последствиями.
Re[2]: Кто-нибудь использует юникодные исходники
От: Alex_Avr Россия  
Дата: 23.08.11 19:45
Оценка:
Здравствуйте, kpcb, Вы писали:

K>Здравствуйте, Sir-G, Вы писали:


SG>>Опрос: кто-нибудь реально использует юникодные исходники?


K>Я использую. Т.к. есть исходник в ANSI открыть в XCode-e то вместо русских комментариев будет абракадабра


В Xcode в свойствах файла (пункт Get Info в контекстном меню) можно выбрать кодировку из раскрывающегося списка
(по умолчанию стоит UTF-8).
В случае ANSI 1251 нужно выбирать кодировку Cyrillic (Windows).
При изменении кодировки файл Xcode спросит что нужно сделать с помощью диалога с двумя кнопками —
Reinterpret (переинтерпретировать то, что есть, т.е. изменить отображение файла в Xcode) и
Convert (конвертировать, т.е. изменить сам файл на диске).
Соответственно, нужно выбрать Reinterpret.
С уважением, Александр Авраменко.
Re[4]: Кто-нибудь использует юникодные исходники
От: Sir-G  
Дата: 24.08.11 03:51
Оценка:
Здравствуйте, 11molniev, Вы писали:

1>можно просто задать юникодовую константу

Можно, если исходник юникодный. =) А иначе не было бы смысла делать такие исходники, по-моему.

SG>>А вот такая проблема. По умолчанию новый файл делается в ANSI. Потом кто-то вставляет китайский иерголиф, файл перекодируется. После этого File Difference начинает глючить (по-моему, я даже видел такое).

1>File Difference — Какую программы вы имеете в виду? Большинство отлично работает с utf-8
Ну я говорю обобщенно говорю. Я могу проверить конкретную программу, но у другого человека программа-сравнивалка может
оказаться не такой умной. Долгое время я работал с Vusial SourceSafe, и вот этот глюк как раз кажется там и был. Теперь пользуюсь дефолтовой сравнивалкой в Tortoise SVN, но знаю, что многие подключают всякие другие программы.

1>В общем, если сумировать:

1>Можно спокойно перекодировать исходники в utf8 — никаких косяков не будет ни в Windows & VS, не в Linux/xBSD & gcc. Единственный всплывающий при этом аспект в том что в win строки должны быть wchat_t & L"", а в lin char & "". Со всеми последствиями.
Тут наверно соглашусь, что все средства уже сами умные стали, чтобы работать с utf-8. Но есть какой-то консерватизм и инерция в переходе на него.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.