История изменений
Исправление Gyros, (текущая версия) :
Народ! А меня вот что интересует. Я про C.
Вот допустим из внешнего источника (с диска cvs, xlsx, ini, БД) извлекаю строки в utf8 (char*) и сразу конвертирую их в (wchar_t*).
Внутри программы работаю с wchar_t*, поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..
При выводе в консоль (на экран) вывожу с форматом ls
printf("%ls\n", wstr);
Если выводить как обычный char* (utf8), то слетает форматирование, потому что истинную длину строки для смешанных строк можно получить если исп. wchar_t* (ф-ция wcslen для wchar_t*).
А вот перед записью во внешие получатели (файлы и проч.), из wchar_t* конвертировать в char*.
Верно ли я делаю? Кто как работает со строками C на смеси русского и англ. языках?
PS Вначале программы всегда вызываю
setlocale(LC_ALL, "ru_RU.utf8");
PS2 Вообще тема отдельной ветки заслуживает
Исправление Gyros, :
Народ! А меня вот что интересует. Я про C.
Вот допустим из внешнего источника (с диска cvs, xlsx, ini, БД) извлекаю строки в utf8 (char*) и сразу конвертирую их в (wchar_t*).
Внутри программы работаю с wchar_t*, поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..
При выводе в консоль (на экран) вывожу с форматом ls
printf("%ls\n", wstr);
Если выводить как обычный char* (utf8), то слетает форматирование, потому что истинную длину строки для смешанных строк можно получить если исп. wchar_t* (ф-ция wcslen для wchar_t*).
А вот перед записью во внешие получатели (файлы и проч.), снова из wchar_t* конвертировать в char*.
Верно ли я делаю? Кто как работает со строками C на смеси русского и англ. языках?
PS Вначале программы всегда вызываю
setlocale(LC_ALL, "ru_RU.utf8");
PS2 Вообще тема отдельной ветки заслуживает
Исправление Gyros, :
Народ! А меня вот что интересует. Я про C.
Вот допустим из внешнего источника (с диска cvs, xlsx, ini, БД) извлекаю строки в utf8 (char*) и сразу конвертирую их в (wchar_t*).
Внутри программы работаю с wchar_t*, поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..
При выводе в консоль (на экран) вывожу с форматом ls
printf("%ls\n", wstr);
Если выводить как обычный char* (utf8), то слетает форматирование, потому что истинную длину строки для смешанных строк можно получить если исп. wchar_t* (ф-ция wcslen для wchar_t*).
А вот перед записью во внешие получатели (файлы и проч.), снова из wchar_t* конвертировать в char*.
Верно ли я делаю? Кто как работает со строками C на русском языке.
PS Вначале программы всегда вызываю
setlocale(LC_ALL, "ru_RU.utf8");
PS2 Вообще тема отдельной ветки заслуживает
Исправление Gyros, :
Народ! А меня вот что интересует. Я про C.
Вот допустим из внешнего источника (с диска cvs, xlsx, ini, БД) извлекаю строки в utf8 (char*) и сразу конвертирую их в (wchar_t*).
Внутри программы работаю с wchar_t*, поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..
При выводе в консоль (на экран) вывожу с форматом ls
printf("%ls\n", wstr);
Если выводить как обычный char* (utf8), то слетает форматирование, потому что истинную длину строки для смешанных строк можно получить если исп. wchar_t* (ф-ция wcslen для wchar_t*).
А вот при записи во внешие получатели (файлы и проч.), снова из wchar_t* конвертировать в char*.
Верно ли я делаю? Кто как работает со строками C на русском языке.
PS Вначале программы всегда вызываю
setlocale(LC_ALL, "ru_RU.utf8");
PS2 Вообще тема отдельной ветки заслуживает
Исходная версия Gyros, :
Народ! А меня вот что интересует. Я про C.
Вот допустим из внешнего источника (с диска cvs, xlsx, ini, БД) извлекаю строки в utf8 (char*) и сразу конвертирую их в (wchar_t*).
Внутри программы работаю с wchar_t*, поэтому нет проблем с обработкой строк вида «Фирма Argus», где намешаны англ. с рус..
При выводе в консоль вывожу с форматом ls
printf("%ls\n", wstr);
Если выводить как обычный char* (utf8), то слетает форматирование, потому что истинную длину строки для смешанных строк можно получить если исп. wchar_t* (ф-ция wcslen для wchar_t*).
А вот при записи во внешие получатели, снова из wchar_t* конвертировать в char*.
Верно ли я делаю? Кто как работает со строками C на русском языке.
PS Вначале программы всегда вызываю
setlocale(LC_ALL, "ru_RU.utf8");
PS2 Вообще тема отдельной ветки заслуживает