View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000977 | Far Manager | Viewer | public | 2009-07-23 14:43 | 2009-09-04 13:07 |
Reporter | snaury | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | duplicate | ||
Summary | 0000977: Неправильный поиск русского текста в кодировке UTF-8 | ||||
Description | Если в файле много английского текста, то при поиске русского текста он находится неправильно. Для примера вот скриншот, вставил в первый попавшийся файл 4 раза слово проверка и попытался в просмотрщике его поискать: http://kitsu.ru/20090723-utf8-search.png (скриншот) http://kitsu.ru/20090723-utf8-search.py (сам файл) Далее, что работает неправильно: 1) Слово проверка в файле я вставил четыре раза, однако при последовательном нажатии на Shift+F7 оно почему-то находится восемь раз 2) При срабатывании выделяется только первые три/четыре буквы. Подозреваю, что при поиске он пытается выделить 8 символов, однако реально выделяются только 8 байт (=4 символа в utf-8), или как-то так - не знаю, в код ещё не смотрел. 3) Каждое нечётное срабатывание (то есть 1-ое, 3-е, 5-е и 7-е) выделяет неправильный кусок текста. Точно не замерял, но очень похоже, что берётся символьное смещение и используется как байтовое. Причём каждое чётное попадает куда нужно, однако выделяет только половину слова. | ||||
Additional Information | Тестировал на билде 1053. | ||||
Tags | No tags attached. | ||||
Build | 0 | ||||
2009-07-23 14:43
|
|
2009-07-23 14:44
|
20090723-utf8-search.py (862 bytes)
# -*- coding: utf-8 -*- import re import os import sys from df.files import * from df.binary import * проверка data = """ 7B 63 1E 7D 7B 63 1C 7D 20 7B 63 10 7D 7B 63 1B 7D 7B 63 2C 7D 7B 63 11 7D 7B 63 1E 7D 7B 63 1C 7D 7B 63 15 7D 21 20 0A 0A 7B 63 22 7D 7B 63 4B 7D 20 7B 63 40 7D 7B 63 30 7D 7B 63 41 7D 7B 63 3A 7D 7B 63 40 7D 7B 63 4B 7D 7B 63 3B 7D 20 7B 63 3D 7D 7B 63 35 7D 7B 63 41 7D 7B 63 3A 7D 7B 63 3E 7D 7B 63 3B 7D 7B 63 4C 7D 7B 63 3A 7D 7B 63 3E 7D 20 7B 63 3F 7D 7B 63 35 7D 7B 63 47 7D 7B 63 30 7D 7B 63 42 7D 7B 63 35 7D 7B 63 39 7D 21 0A """.replace("\r", "").replace("\n", "") проверка cdata = hex2binary(data) print repr(cdata) проверка def repchar(m): c = 0x400 + ord(m.group(1)) return unichr(c) проверка print re.sub(r"{c(.)}", repchar, unicode(cdata)) |
|
|
|
позволю себе дополнить: проблема с поиском во вьювере в utf8 файлах. либо не находит строку, либо находит несколько раз. условия: чистая установка Far Manager, version 2.0 (build 1104) x86. тестовый пример test.7z: поиск во вьювере в присоединенном файле находит два раза слово "сред", и ни одного раза "бол" |
|
Повторение http://bugs.farmanager.com/view.php?id=786 |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-07-23 14:43 | snaury | New Issue | |
2009-07-23 14:43 | snaury | File Added: 20090723-utf8-search.png | |
2009-07-23 14:44 | snaury | File Added: 20090723-utf8-search.py | |
2009-09-04 12:56 | ajax16384 | File Added: test.7z | |
2009-09-04 12:56 | ajax16384 | Note Added: 0004009 | |
2009-09-04 13:00 | Denis | Note Added: 0004010 | |
2009-09-04 13:07 | alexy | Relationship added | duplicate of 0000786 |
2009-09-04 13:07 | alexy | Build | => 0 |
2009-09-04 13:07 | alexy | Status | new => closed |
2009-09-04 13:07 | alexy | Resolution | open => duplicate |