Re: Программирование с трок в UTF-8 локали
On 2004.12.20 at 11:05:13 +0500, Viktor Vislobokov wrote: > > >И слава богу. Программам "которые работают с русским языком" там и > >место. Правильная программа должна работать с любым языком, с которым > >захотел пользователь. > > > > > Витус, а можно всё-таки с конкретикой? Что делать-то? С getch(), с > добавлением символа? Самое правильное - поменять язык программирования. В Perl, Tcl, Python, Java эти проблемы давно уже за вас решены. Если пользоваться "портабельнып ассеблером" то внимательно читать документацию по той версии ncurses, которая используется. Не все версии поддерживают utf-8 как вообще. Кроме этого следует обратить внимание на понятие Multibyte string и функции преобразования wchar в multibyre и обратно, равно как и вообще на mb* функции. > Не то, чтобы я был не согласен с твоими словами, но когда я вижу, что > не могу нормально писать... Тогда следует читать.
Re: Программирование с трок в UTF-8 локали
On 2004.12.20 at 10:44:13 +0500, Viktor Vislobokov wrote: > Привет всем. > > Я тут угрузился проблемой русских строк в UTF-8 локали. > Так уже писать нельзя > > tmp = strdup("Проба"); > tmp1 = strndup(tmp, 3); > > Потому что в tmp1 будет не "Про", а фиг него знает что. > > strlen("Проба"); > > вернёт вовсе не 5. > > Да, есть в текушей libc такой чудный вещь как wchar.h > и соответствующие рутины типа wcsdup и т.д. Но старые > программы теперь в глубокой жо..? И слава богу. Программам "которые работают с русским языком" там и место. Правильная программа должна работать с любым языком, с которым захотел пользователь.
Программирование с трок в UTF-8 локали
Привет всем. Я тут угрузился проблемой русских строк в UTF-8 локали. Так уже писать нельзя tmp = strdup("Проба"); tmp1 = strndup(tmp, 3); Потому что в tmp1 будет не "Про", а фиг него знает что. strlen("Проба"); вернёт вовсе не 5. Да, есть в текушей libc такой чудный вещь как wchar.h и соответствующие рутины типа wcsdup и т.д. Но старые программы теперь в глубокой жо..? А если я хочу скажем в curses добавить полученный мной через getch символ к строке, то как это сделать, учитывая, что getch возвращает int, а строка имеет типа w_chart *? Как вообще теперь добавлять СИМВОЛ к СТРОКЕ? Раньше было просто всегда работала конструкция вида: char tmp[2]; char *str; tmp[1] = '\0'; tmp[2] = 'А'; strcat(str, tmp); Что делать сейчас? -- С уважением, Виктор