Рейтинг:
2
yaojianing
Спасибо за вашу помощь.
ifstream fin(strFileName,ios_base::in|ios_base::binary);
size_t index = 2;
wstring ws;
while (!fin.eof())
{
//fin.seekg(index, ios::beg);
wchar_t wch;
fin.read((char *)(&wch), 2);
if (wch == 0x000D)
{
CUser u;
string s;
s=u.WstringToString(ws);
AnaliseString(s);
ws.erase(0, ws.size() + 1);
index += 4; }
else
{
ws.append(1,wch);
index += 2;
}
}
Рейтинг:
15
Richard MacCutchan
Если источником является Unicode, то вы должны использовать wstring
.
yaojianing
Спасибо за ваш ответ.Но я с тобой не согласен.Я когда-либо использовал "wstring" для чтения файла Unicode,результат тот же самый.
kimnguyentran
извините, вы можете опубликовать это досье? Спасибо!
nv3
Возможно, вам следует взять шестнадцатеричный редактор, чтобы посмотреть на файл и решить, действительно ли это обычный файл Unicode-16. Например, он может быть закодирован как UTF-8, другая кодировка Unicode, что потребует какого-то другого метода его чтения.
Richard MacCutchan
Извините, я не понимаю, о чем вы говорите.
Chuck O'Toole
Учитывая определение файлов LRC (http://en.wikipedia.org/wiki/LRC_(file_format)) скорее всего, это файл UTF-8, поэтому только некоторые символы должны быть "мусорными" и нуждаться в переводе. Если все это "мусор", у вас есть какой-то другой файл или проблема.
kimnguyentran
извините, я думал, что у вас есть примеры кода, поэтому, пожалуйста, пришлите мне файл.
Я немного говорю по-английски, надеюсь, вы понимаете.
Я не знаю, как написать код "Read and write UNICOE, UTF-16, UTF-8" b C++ (visual studio), так что вы можете мне помочь? спасибо.
Richard MacCutchan
Да, я забыл, что потоки STL не могут правильно обрабатывать Unicode. Вы должны использовать обычный файл Io в стиле C, чтобы прочитать его и проверить кодировку вручную. этот Совет может быть, это поможет вам кое-что объяснить.
kimnguyentran
Большое спасибо!.