Aspell декодирует файл словаря как latin1, даже если в конфигурации среды и aspell указана кодировка UTF-8 - PullRequest
1 голос
/ 03 августа 2010

Обновление Очевидно, что решение этой проблемы заключается в использовании еще одного параметра конфигурации для установки Encofing: --encodig = UTF-8 в командной строке.

Например:

zby@tvm1:/home/xpapers$ aspell --lang=en create master ./dictionary.local < w 
Warning: The word "Pérez" is invalid. The character '©' (U+A9) may not appear in the middle of a word. Skipping word.

Файл w содержит только одно слово:

zby@tvm1:/home/xpapers$ cat w
Pérez

То есть вторая буква e с ударением.Hexdump:

zby@tvm1:/home/xpapers$ hexdump w
0000000 c350 72a9 7a65 000a                    
0000007

Это littleendian - поэтому вам нужно перевернуть байты - но он кажется правильным UTF-8 (50 - P, затем c3 72 - то есть с ударением), и он отображаетОК в моей консоли.

В env у меня есть:

zby@tvm1:/home/xpapers$ set | grep LANG
LANG=en_US.UTF-8

Конфигурация aspell (в виде дампов конфигурации aspell dump) прилагается ниже, я думаю, что единственная соответствующая информация:

# encoding (string)
#   encoding to expect data to be in
# default: !encoding = UTF-8

Так что, похоже, все настроено для UTF-8 - но все же Aspell, кажется, пытается Латинская-1.

Это на Ubuntu Karmic Coala:

zby@tvm1:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.10
DISTRIB_CODENAME=karmic
DISTRIB_DESCRIPTION="Ubuntu 9.10"

А Аспелл ​​это:

zby@tvm1:~$ aspell -v
@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.6)

============================================

zby@tvm1:/home/xpapers$ aspell dump config
# conf (string)
#   main configuration file
# default: aspell.conf

# conf-dir (string)
#   location of main configuration file
# default: /etc

# data-dir (string)
#   location of language data files
# default: <prefix:lib/aspell> = /usr/lib/aspell

# dict-alias (list)
#   create dictionary aliases

# dict-dir (string)
#   location of the main word list
# default: <data-dir> = /usr/lib/aspell

# encoding (string)
#   encoding to expect data to be in
# default: !encoding = UTF-8

# filter (list)
#   add or removes a filter

# filter-path (list)
#   path(s) aspell looks for filters

# mode (string)
#   filter mode
# default: url

# extra-dicts (list)
#   extra dictionaries to use

# home-dir (string)
#   location for personal files
# default: <$HOME|./> = /home/zby

# ignore (integer)
#   ignore words <= n chars
# default: 1

# ignore-case (boolean)
#   ignore case when checking words
# default: false

# ignore-repl (boolean)
#   ignore commands to store replacement pairs
# default: false

# keyboard (string)
#   keyboard definition to use for typo analysis
# default: standard

# lang (string)
#   language code
# default: <language-tag> = en_US

# local-data-dir (string)
#   location of local language data files
# default: <actual-dict-dir> = /usr/lib/aspell/

# master (string)
#   base name of the main dictionary to use
# default: <lang> = en_US

# normalize (boolean)
#   enable Unicode normalization
# default: true

# norm-required (boolean)
#   Unicode normalization required for current lang
# default: false

# norm-form (string)
#   Unicode normalization form: none, nfd, nfc, comp
# default: nfc

# norm-strict (boolean)
#   avoid lossy conversions when normalization
# default: false

# per-conf (string)
#   personal configuration file
# default: .aspell.conf

# personal (string)
#   personal dictionary file name
# default: .aspell.<lang>.pws = .aspell.en_US.pws

# prefix (string)
#   prefix directory
# default: /usr

# repl (string)
#   replacements list file name
# default: .aspell.<lang>.prepl = .aspell.en_US.prepl

# run-together (boolean)
#   consider run-together words legal
# default: false

# run-together-limit (integer)
#   maximum number that can be strung together
# default: 2

# run-together-min (integer)
#   minimal length of interior words
# default: 3

# save-repl (boolean)
#   save replacement pairs on save all
# default: true

# set-prefix (boolean)
#   set the prefix based on executable location
# default: true

# size (string)
#   size of the word list
# default: +60

# sug-mode (string)
#   suggestion mode
# default: normal

# sug-edit-dist (integer)
#   edit distance to use, override sug-mode default
# default: 1

# sug-typo-analysis (boolean)
#   use typo analysis, override sug-mode default
# default: true

# sug-repl-table (boolean)
#   use replacement tables, override sug-mode default
# default: true

# sug-split-char (list)
#   characters to insert when a word is split

# use-other-dicts (boolean)
#   use personal, replacement & session dictionaries
# default: true

# variety (list)
#   extra information for the word list

# warn (boolean)
#   enable warnings
# default: true

# affix-compress (boolean)
#   use affix compression when creating dictionaries
# default: false

# clean-affixes (boolean)
#   remove invalid affix flags
# default: true

# clean-words (boolean)
#   attempts to clean words so that they are valid
# default: false

# invisible-soundslike (boolean)
#   compute soundslike on demand rather than storing
# default: false

# partially-expand (boolean)
#   partially expand affixes for better suggestions
# default: false

# skip-invalid-words (boolean)
#   skip invalid words
# default: true

# validate-affixes (boolean)
#   check if affix flags are valid
# default: true

# validate-words (boolean)
#   check if words are valid
# default: true

# backup (boolean)
#   create a backup file by appending ".bak"
# default: true

# byte-offsets (boolean)
#   use byte offsets instead of character offsets
# default: false

# guess (boolean)
#   create missing root/affix combinations
# default: false

# keymapping (string)
#   keymapping for check mode: "aspell" or "ispell"
# default: aspell

# reverse (boolean)
#   reverse the order of the suggest list
# default: false

# suggest (boolean)
#   suggest possible replacements
# default: true

# time (boolean)
#   time load time and suggest time in pipe mode
# default: false


#######################################################################
#
# Filter: email
#   filter for skipping quoted text in email messages
#
# configured as follows:

# f-email-quote (list)
#   email quote characters

# f-email-margin (integer)
#   num chars that can appear before the quote char
# default: 10


#######################################################################
#
# Filter: html
#   filter for dealing with HTML documents
#
# configured as follows:

# f-html-check (list)
#   HTML attributes to always check

# f-html-skip (list)
#   HTML tags to always skip the contents of


#######################################################################
#
# Filter: tex
#   filter for dealing with TeX/LaTeX documents
#
# configured as follows:

# f-tex-check-comments (boolean)
#   check TeX comments
# default: false

# f-tex-command (list)
#   TeX commands


#######################################################################
#
# Filter: sgml
#   filter for dealing with generic SGML/XML documents
#
# configured as follows:

# f-sgml-check (list)
#   SGML attributes to always check

# f-sgml-skip (list)
#   SGML tags to always skip the contents of


#######################################################################
#
# Filter: texinfo
#   filter for dealing with Texinfo documents
#
# configured as follows:

# f-texinfo-ignore (list)
#   Texinfo commands to ignore the parameters of

# f-texinfo-ignore-env (list)
#   Texinfo environments to ignore


#######################################################################
#
# Filter: context
#   experimental filter for hiding delimited contexts
#
# configured as follows:

# f-context-delimiters (list)
#   context delimiters (separated by spaces)

# f-context-visible-first (boolean)
#   swaps visible and invisible text
# default: false

1 Ответ

3 голосов
/ 04 августа 2010

При создании словаря с -lang = en Aspell ищет файл en language.В моей системе Ubuntu это выглядит так:

name en
charset iso8859-1
special ' -*-
soundslike en
affix en

Так что Aspell использует эту кодировку.Чтобы переопределить этот параметр, вы используете опцию --encoding = utf-8.

Затем для ввода (и предлагаемых слов) установите параметр кодирования.

...