| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > проблемы с чтением unicode из файла |
| Автор: informn 24.7.2005, 17:20 | ||
Нужно считать файл(Unicode UTF-16).
Вот код, ктр. это делает, но возникает такая проблема: Если просматривать содержимое chu, то через 1 символ содержится 0-символ. В chu содержится [0] 255 'ÿ' wchar_t [1] 254 'þ' wchar_t [2] 60 '<' wchar_t [3] 0 wchar_t [4] 97 'a' wchar_t [5] 0 wchar_t [6] 114 'r' wchar_t [7] 0 wchar_t [8] 116 't' wchar_t [9] 0 wchar_t [10] 105 'i' wchar_t [11] 0 wchar_t [12] 99 'c' wchar_t [13] 0 wchar_t [14] 108 'l' wchar_t Откуда берутся символы [0] 255 'ÿ' wchar_t и [1] 254 'þ' wchar_t(их нет в исходном файле)? может быть это признак unicode текста? вот начало файла: <article id="1 При преобразовании WideCharToMultiByte он преобразует не всю строку, а только её часть до первого 0. Как убрать эти лишние 0. Может быть это можно сделать как попроще? Компилятор visual c++ 7.1 рихтера читал, но там как-то всё мутно и без конкретных нормальных примеров. может быь ещё где стоит почитать? |
| Автор: Дрон 25.7.2005, 14:04 | ||||||
В общем, да. Кроме того, они обозначают порядок следования старшего/младшего байтов.
Так ты по байтам, похоже, просматриваешь. А unicode-то - двубайтный. Для латинских букв старший байт содержит 0, а младший -- ASCII-код. Т.е. там всё нормально.
Сам не проверял и никогда с этой функцией не работал, но похоже, что это ты что-то не так делаешь. |
| Автор: maxim1000 25.7.2005, 14:09 |
| попробуй вручную посчитать длину строки и передать ее вместо -1 хотя все равно что-то не то... |