LINUX.ORG.RU

История изменений

Исправление 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 Вообще тема отдельной ветки заслуживает