powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с массивом
17 сообщений из 42, страница 2 из 2
Непонятки с массивом
    #38895175
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
про однобайтовые кодировки ещё очень долго не удастся забыть - слишком много средств работает именно с ними. И далеко не все консоли используют их. В том же "самом популярном" до сих пор в консоли cp866 используется. Да и на что ориентироваться? UTF8? UTF16? USC? USC-2? KIO8R? Да и многие nix внутри всё ещё однобайтовые...
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38895316
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivSashaMercuryто есть в других кодировках объём памяти на разные регистры одной и той-же буквы могут отличаться ?
Конечно.
Не для всех кодировок, естественно.
Но приложение с поддержкой разных должно быть на это завязано, безусловно.

Не знал этого. Спасибо :)
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38895319
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaSashaMercuryпропущено...


а как бы выглядел "продакшн" код ?

Форумчане, ну не надо троллить... смешивать многобайтовые кодировки и классические С-строки (NULL-terminated string) - изыскание приключений на причинное место. Тогда уж не забудьте, что даже в ASCII toUpper будет худо-бедно работать на первых 127 символах (т.е. латинском алфавите), а вот на "расширенных" (в коих и хранятся "национальные" кодировки) - далеко не факт и сильно зависит от настроек локали...

да я и не "троллил" . В Сообществе такого в принципе нет.
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38895334
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryда я и не "троллил" . В Сообществе такого в принципе нет.
Не знал этого. Спасибо :)
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38895429
Alexklonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaДа и на что ориентироваться? UTF8? UTF16? USC? USC-2? KIO8R?
Лучше на UTF-8. Экономит место, поддерживается в консолях Linux, QNX и блокноте Windows 8.
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38895519
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryто есть в других кодировках объём памяти на разные регистры одной и той-же буквы могут отличаться ?
Вот почитайте, статейка старая, описано доходчиво для понимания.
BagaBaga.. Да и на что ориентироваться? UTF8? UTF16? USC? USC-2? KIO8R?
А почему бы Вам не предоставить возможность ответа на данный вопрос конечному пользователю Вашего приложения, а не ограничивать его чем-то одним?
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38896481
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П.С.М.BagaBaga.. Да и на что ориентироваться? UTF8? UTF16? USC? USC-2? KIO8R?
А почему бы Вам не предоставить возможность ответа на данный вопрос конечному пользователю Вашего приложения, а не ограничивать его чем-то одним?
Я всё же это удовольствие (рассчитывать на все кодировки в любом их сочетании) оставлю Вам. А сам буду исходит из здравого смысла, требований ТЗ и существуюх ограничений. Кои определяются:
1. Планируемой средой выполнения. Если целевая система не поддерживает кодировку, то какой смысл тратить на неё и так ограниченные ресурсы?
2. Используемой средой разработки. Если она не поддерживает выбранную кодировку ... в общем, нескучной отладки.
3. Используемым набором библиотек (фреймвоков). Если библиотеки не поддерживает какую-либо кодировку в принципе, то нужно выбросить либо библиотеку, либо забить на кодировку.
4. Унаследованным кодом, зачастую писавшимся ещё в то время, когда возможности многобайтных кодировок даже не помышляли. Выкинуть уже (пусть как-то) работающую систему из-за любви к искусству ни кто в своём уме не даст.
5. Малой практикой написания кросплатформенных "многокодировочных" приложений. Все успешные используют внутри какуют-то одну, а всё "ионое" перекодируют явным или прозрачным способом, если вообще заморачиваются на это.

Если интересно про поддержку кодировок в С++, можно посмотреть, например, вот это - http://goo.gl/dK9KUR
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38896488
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы исходил из возможностей интеграции.
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38896680
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaMasterZiv,
про однобайтовые кодировки ещё очень долго не удастся забыть - слишком много средств работает именно с ними. И далеко не все консоли используют их. В том же "самом популярном" до сих пор в консоли cp866 используется. Да и на что ориентироваться? UTF8? UTF16? USC? USC-2? KIO8R? Да и многие nix внутри всё ещё однобайтовые...

Ну не знаю...
Я работаю сейчас в основном под Linux, тут просто ВСЁ поддерживает ВСЕ кодировки.

А на счёт "что выбрать" -- тут уже тоже давно всё понятно -- UTF8. Войны кодировок кончились.
Но ещё раз -- в линуксе как правило все приложения поддерживают все кодировки. Т.е. какую хочешь -- такую и используй,
таким образом теперь только время решит, что лучше.
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38896803
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
с u8, наверное, согласен. Хотя ещё лет пять назад всё было не так однозначно. И для иероглифического письма всё-таки UTF (что 8, что не 8) не самое распространённое решение. У них свой велосипед (как минимум - у японцев). Но это, что называется, не моя целевая аудитория.

Про кодировки и прочее. У Вас нормально отработает
cat filename | sed 's/право/лево/' > newfile
если консоль u8 (или KOI8, или ещё какая), а файл, например, в старой доброй cp866 (или другой, не той, что в консоли)?
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38896805
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* в примере специально использована кирилица. С латиницей, понятное дело, всё должно быть ок.
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38897939
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Но учти, это не для продакшн кода, будет работать в одной только кодировке -- ANSI (ASCII и её расширениях).

Тогда опять непонятно. Читаю из файла строку с русскими символами:

DIR c:\\лог

в char t[20]; записывается "DIR c:\\Лог". Если русских символов в ASCII нет почему выводится нормально?

Та же строка из файла, но в wchar_t t[20] записывается "DIR c:\\Ëîã". Из-за чего так?
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38897957
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лет 10 назад уже было все однозначно....

BagaBaga
Про кодировки и прочее. У Вас нормально отработает
cat filename | sed 's/право/лево/' > newfile
если консоль u8 (или KOI8, или ещё какая), а файл, например, в старой доброй cp866 (или другой, не той, что в консоли)?


нет, конечно, но

export LANG=xxxx

и вперед...
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38897959
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisMasterZivНо учти, это не для продакшн кода, будет работать в одной только кодировке -- ANSI (ASCII и её расширениях).

Тогда опять непонятно. Читаю из файла строку с русскими символами:

DIR c:\\лог

в char t[20]; записывается "DIR c:\\Лог". Если русских символов в ASCII нет почему выводится нормально?

Та же строка из файла, но в wchar_t t[20] записывается "DIR c:\\Ëîã". Из-за чего так?

а вот магия...

на самом деле скорее всего там занимаешься все верно, неправильно ты смотришь...
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38897964
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
а вот магия...

на самом деле скорее всего там занимаешься все верно, неправильно ты смотришь...

Отладчик показывает.
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38898024
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
		std::wifstream wif("c:\\file.txt", std::ios::binary);
		std::wstringstream wss;
		wss << wif.rdbuf();
		std::wstring str1 = wss.str(); 

		const wchar_t* s = str1.c_str();

		FILE* file = fopen("c:\\file1.txt", "w");
		fwprintf(file, s);
		fclose(file);



из файла file.txt читаем строку "Новая папка" и записываем её в file1.txt. В итоге в file1.txt оказывается строка "Ќова¤ папка". Из-за чего может быть такое?
...
Рейтинг: 0 / 0
Непонятки с массивом
    #38898061
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivлет 10 назад уже было все однозначно....
Пусть так. Только STL с юникодом только-только начала дружить, и то не полностью...

MasterZivBagaBaga
Про кодировки и прочее. У Вас нормально отработает
cat filename | sed 's/право/лево/' > newfile
если консоль u8 (или KOI8, или ещё какая), а файл, например, в старой доброй cp866 (или другой, не той, что в консоли)?


нет, конечно, но

export LANG=xxxx

и вперед...
Так-то можно, но в этом уже никакой магии ...
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с массивом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]