title: Aspell decodes dictionary file as latin1 even if both environment and aspell config specifies the encoding as UTF-8
body: <p><strong>Update</strong>
  Apparently the solution to this is to use yet another configuration parameter to set the encofing: --encodig=UTF-8 on the command line.</p>
  
  <p>For example:</p>
  
  <pre><code>zby@tvm1:/home/xpapers$ aspell --lang=en create master ./dictionary.local &lt; w 
  Warning: The word "PÃ©rez" is invalid. The character '©' (U+A9) may not appear in the middle of a word. Skipping word.
  </code></pre>
  
  <p>The file w contains only one word:</p>
  
  <pre><code>zby@tvm1:/home/xpapers$ cat w
  Pérez
  </code></pre>
  
  <p>That is the second letter is e with accent.  The hexdump:</p>
  
  <pre><code>zby@tvm1:/home/xpapers$ hexdump w
  0000000 c350 72a9 7a65 000a                    
  0000007
  </code></pre>
  
  <p>This is littleendian - so you need to flip the bytes - but it seems correct UTF-8 (50 - P, then c3 72 - which is e with accent ), and it displays OK in my console.</p>
  
  <p>In the env I have:</p>
  
  <pre><code>zby@tvm1:/home/xpapers$ set | grep LANG
  LANG=en_US.UTF-8
  </code></pre>
  
  <p>The aspell config (as dumped by aspell dump config ) is attached below, I think that the only relevant info is:</p>
  
  <pre><code># encoding (string)
  #   encoding to expect data to be in
  # default: !encoding = UTF-8
  </code></pre>
  
  <p>So it seems that everything is set up for UTF-8 - but still aspell seem to try Latin-1.</p>
  
  <p>This is on Ubuntu Karmic Coala:</p>
  
  <pre><code>zby@tvm1:~$ cat /etc/lsb-release
  DISTRIB_ID=Ubuntu
  DISTRIB_RELEASE=9.10
  DISTRIB_CODENAME=karmic
  DISTRIB_DESCRIPTION="Ubuntu 9.10"
  </code></pre>
  
  <p>And Aspell is:</p>
  
  <pre><code>zby@tvm1:~$ aspell -v
  @(#) International Ispell Version 3.1.20 (but really Aspell 0.60.6)
  </code></pre>
  
  <p>=============================================</p>
  
  <pre><code>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: &lt;prefix:lib/aspell&gt; = /usr/lib/aspell
  
  # dict-alias (list)
  #   create dictionary aliases
  
  # dict-dir (string)
  #   location of the main word list
  # default: &lt;data-dir&gt; = /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: &lt;$HOME|./&gt; = /home/zby
  
  # ignore (integer)
  #   ignore words &lt;= 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: &lt;language-tag&gt; = en_US
  
  # local-data-dir (string)
  #   location of local language data files
  # default: &lt;actual-dict-dir&gt; = /usr/lib/aspell/
  
  # master (string)
  #   base name of the main dictionary to use
  # default: &lt;lang&gt; = 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.&lt;lang&gt;.pws = .aspell.en_US.pws
  
  # prefix (string)
  #   prefix directory
  # default: /usr
  
  # repl (string)
  #   replacements list file name
  # default: .aspell.&lt;lang&gt;.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 &amp; 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
  </code></pre>