diff --git a/src/fastwq/libs/mdict/readmdict.py b/src/fastwq/libs/mdict/readmdict.py index 65b39b0..00f0986 100644 --- a/src/fastwq/libs/mdict/readmdict.py +++ b/src/fastwq/libs/mdict/readmdict.py @@ -578,7 +578,7 @@ class MDD(MDict): index_dict['record_block_type'] = _type record_start, key_text = self._key_list[i] index_dict['record_start'] = record_start - index_dict['key_text'] = key_text.decode("utf-8") + index_dict['key_text'] = key_text.decode("utf-8", errors='ignore') index_dict['offset'] = offset # reach the end of current record block if record_start - offset >= decompressed_size: @@ -820,7 +820,7 @@ class MDX(MDict): index_dict['record_block_type'] = _type record_start, key_text = self._key_list[i] index_dict['record_start'] = record_start - index_dict['key_text'] = key_text.decode('utf-8') + index_dict['key_text'] = key_text.decode('utf-8', errors='ignore') index_dict['offset'] = offset # reach the end of current record block if record_start - offset >= decompressed_size: diff --git a/src/fastwq/service/base.py b/src/fastwq/service/base.py index b195c31..84ba2fa 100644 --- a/src/fastwq/service/base.py +++ b/src/fastwq/service/base.py @@ -412,7 +412,10 @@ class _DictBuildWorker(QThread): self._func = func def run(self): - self._builder = self._func() + try: + self._builder = self._func() + except Exception: + self._builder = None @property def builder(self): @@ -478,7 +481,7 @@ class MdxService(LocalService): self.html_cache = defaultdict(str) self.query_interval = 0.01 self.styles = [] - if self.support: + if MdxService.check(self.dict_path): self.builder = self._get_builer(dict_path, service_wrap(MdxBuilder, dict_path)) @staticmethod @@ -487,7 +490,7 @@ class MdxService(LocalService): @property def support(self): - return MdxService.check(self.dict_path) + return self.builder and MdxService.check(self.dict_path) @property def title(self): @@ -647,13 +650,13 @@ class StardictService(LocalService): def __init__(self, dict_path): super(StardictService, self).__init__(dict_path) self.query_interval = 0.05 - if self.support: + if StardictService.check(self.dict_path): self.builder = self._get_builer( dict_path, service_wrap(StardictBuilder, dict_path, in_memory=False) ) - #self.builder = StardictBuilder(self.dict_path, in_memory=False) - self.builder.get_header() + if self.builder: + self.builder.get_header() @staticmethod def check(dict_path): @@ -661,7 +664,7 @@ class StardictService(LocalService): @property def support(self): - return StardictService.check(self.dict_path) + return self.builder and StardictService.check(self.dict_path) @property def title(self):