Кодировка символов фиксированного размера - PullRequest
0 голосов
/ 21 декабря 2009

Я разрабатываю в VB.Net приложение, которое читает текстовые файлы, используя объект FileStream. Я не использую StreamReader, так как буферизация делает невозможным использование Seek.

Эти текстовые файлы образуют базу данных с файлами индекса и данных. В индексных файлах все поля имеют фиксированную длину, что не относится к файлам данных.

Я недавно столкнулся с проблемой. Поскольку некоторые из моих файлов содержат акценты, соответствующие символы занимают более 1 байта. Поэтому, когда я выполняю поиск в индексном файле, и появляется смещение, остальная часть моего индексного файла не читается правильно.

Я ищу кодировку, которая позволяет использовать акценты, специальные символы и т. Д., Где каждый символ хранится с использованием одинакового количества байтов. Сюда,; Я все еще мог искать в моих файлах. Это существует?

Спасибо,

CFP.

Ответы [ 2 ]

1 голос
/ 21 декабря 2009

UTF-32 - единственное (без потерь) кодирование, которое гарантированно имеет фиксированную длину. Это вызывает много накладных расходов.

Что я не понимаю, так это то, что вы заявляете, что ваш индексный файл содержит поля фиксированной длины. Это означает, что у вас не должно быть проблем. Вы можете искать в индексном файле, используя эти конкретные фиксированные длины. И затем искать в файле данных, используя указанный адрес в индексном файле. Вы всегда будете в конце текста. Чего мне не хватает?

0 голосов
/ 21 декабря 2009

Я думаю, UTF-16 будет иметь все акценты, и каждый символ будет иметь одинаковое количество байтов.

Если вы знаете, что это конкретный язык, вы можете использовать кодировку для этого языка.

...