![]() |
Матюгальник - проблемы с чтением русского текста из потока
Привет. Вот описание моей проги:
Код:
/**Кто-нибудь подскажет как это сделать? Исходники прилагаются. http://rapidshare.com/files/25828677...uk.tar.gz.html MD5: E066B1111559B1FD939CDEEC6B45254B |
Скорее всего там кодировка UTF-8 в которой русские символы кодируются 2-мя байтами, а англ - одним. Так что считывай 1 символ. если это UTF8 то считывай второй символ и декодируй в один.
|
Как я могу узнать когда следующий символ занимает два байта? В никсах каждый раз по разному, например, "." - занимает один байт, а "ф" - два.
|
все символы с кодом > 0x7F кодируются двумя байтами.
т.е. считываешь 1 символ. Если его код < 0x80 то символ таким и остаются. В противном случае считываешь второй символ и эти 2 символа конвертиш из UTF-8 в ANSI |
Огромное спасибо. Пригодится, ведь, не только для матерящихся программ. +1
|
эмм такие строки подходят под определение мультибайтовых... в общем крайне неудобная штука
вот одно обсуждение нашел http://www.linux.org.ru/view-message.jsp?msgid=3035365 в php с такими строками работашь как mb_*(); в windows MultiByteToWideChar и тд... а вот в unix я еще не писал хех |
| Время: 15:06 |