Re[4]: Чтение файлов в кодировке utf8 (linux+C++)
От: Vostok Россия  
Дата: 19.08.09 10:31
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Vostok, Вы писали:


V>>Ну и, естественно, когда я пытаюсь определить длину слов, которые хранятся в виде string, то для русских слов размер, конечно, определяется некорректно. Вот и я решил исправить всё кардинально: читать всё в utf8 в wstring и получать правильные длины слов.


RO>Не получишь ты правильные длины слов подсчетом количества Unicode code points.


RO>Café (U+0043 U+0061 U+0066 U+00E9) — сколько букв? (Правильный ответ: 4.)

RO>Café (U+0043 U+0061 U+0066 U+0065 U+0301) — сколько букв? (Правильный ответ: 4.)

RO>Shuffle (U+0053 U+0068 U+0075 U+0066 U+0066 U+006C U+0065) — сколько букв? (Правильный ответ: 7.)

RO>Shuffle (U+0053 U+0068 U+0075 U+FB04 U+0065) — сколько букв? (Правильный ответ: 7.)

RO>Encyclopædia (U+0045 U+006E U+0063 U+0079 U+0063 U+006C U+006F U+0070 U+00E6 U+0064 U+0069 U+0061) — сколько букв? (Правильный ответ: 13.)


RO>Ударе́ние (U+0423 U+0434 U+0430 U+0440 U+0435 U+0301 U+043D U+0438 U+0435) — сколько букв? (Правильный ответ: 8.)


RO>(В шрифте Verdana диакритические знаки сползают)


Хм, а я сделал следующим образом: после курения доков посетила прекрасное знание, что wstring хранит всё в UCS-2. Взял конвертацию UTF-8 -> UCS-2 и длина слов wstring стала считаться верно.. Чего я и добивался.

Но проблему с wcout пока не осилил. Как я понимаю, надо перед выводом всё обратно в utf-8 гнать, либо wcout выставлять ucs-2. Но что-то с наскока не получилось.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.