View Issue Details

IDProjectCategoryView StatusLast Update
0000977Far ManagerViewerpublic2009-09-04 13:07
Reportersnaury Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionduplicate 
Summary0000977: Неправильный поиск русского текста в кодировке 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.
TagsNo tags attached.
Build0

Relationships

duplicate of 0000786 closedvskirdin Неверное отображение найденного текста в файлах UTF-8 

Activities

2009-07-23 14:43

 

20090723-utf8-search.png (16,586 bytes)   
20090723-utf8-search.png (16,586 bytes)   

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))
20090723-utf8-search.py (862 bytes)   

ajax16384

2009-09-04 12:56

reporter  

test.7z (358 bytes)

ajax16384

2009-09-04 12:56

reporter   bugnote:0004009

позволю себе дополнить:

проблема с поиском во вьювере в utf8 файлах. либо не находит строку, либо находит несколько раз.

условия: чистая установка Far Manager, version 2.0 (build 1104) x86.
тестовый пример test.7z: поиск во вьювере в присоединенном файле находит два раза слово "сред", и ни одного раза "бол"

Denis

2009-09-04 13:00

reporter   bugnote:0004010

Повторение http://bugs.farmanager.com/view.php?id=786

Issue History

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