Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I just started using zsh, and love it. However, I've stumbled upon an annoyance when it comes to international characters:

➜  ~  touch åäö.txt               
➜  ~  ls                          
Desktop       Dropbox       Music         Sites
Documents     Library       Pictures      a??a??o??.txt
Downloads     Movies        Public
➜  ~  rm -v a<030a>a<0308>o<0308>.txt
åäö.txt
➜  ~  

With bash it looks like this (the filename in rm -v is auto completed by pressing TAB in both cases).

johan@retina ~ $ touch åäö.txt
johan@retina ~ $ ls
Desktop       Dropbox       Music         Sites
Documents     Library       Pictures      åäö.txt
Downloads     Movies        Public
johan@retina ~ $ rm -v åäö.txt 
åäö.txt
johan@retina ~ $ 

How can I fix this with zsh?

EDIT:

Setting export LANG=en_US:UTF-8 fixes the output of e.g. ls and also shows it properly on the line below current input when there are multiple matches on TAB-completion. However, selecting the file from TAB-completion it shows the wrong way on the input line, the same goes for when there is only one match.

The above example now looks like this with zsh:

➜  ~  touch åäö.txt               
➜  ~  ls                          
åäö.txy
➜  ~  rm -v a<030a>a<0308>o<0308>.txt
åäö.txt
➜  ~  

If I have two files matching on TAB-completion it looks like this:

➜  ~  touch åäö.txt               
➜  ~  touch öäå.txt                          
➜  ~  rm 
öäå.txt    åäö.txt

Selecting one of the above by pressing TAB again and using arrow keys, or pressing either a or o to only make one match before completion generates this:

➜  ~  rm o<0308>a<0308>a<030a>.txt
➜  ~  rm a<030a>a<0308>o<0308>.txt

Any suggestions on what's wrong?

share|improve this question
2  
What's the output of echo $LANG in bash resp. zsh? –  mpy Apr 15 '13 at 14:08
    
It's blank for both. I'm on OS X 10.8.3 by the way. –  Morgan Apr 15 '13 at 14:30
    
Ok, then I'm out (OS X), sorry. But try nevertheless e.g. LANG=en_US.UTF-8. zsh should offer you all possibilities with LANG=<TAB>, but en_US.UTF-8 works perfect with german umlauts. –  mpy Apr 15 '13 at 14:36
    
export LANG=en_US.UTF-8 fixed the ls output, however, the auto completion still shows a<030a>a<0308>o<0308>.txt –  Morgan Apr 15 '13 at 14:47
    
Just another idea: Did you compile zsh yourself? If not, grab latest source (zsh.sourceforge.net/Arc/source.html) and be sure to use ./configure --enable-multibyte. After make just try by starting ./Src/zsh prior installing that version. –  mpy Apr 15 '13 at 14:56

1 Answer 1

Thanks @mpy for solving the LANG problem. The answer is to use:

export LANG=en_US.UTF-8

in your .zshrc.

The remaining problem is caused by the completion system. Unfortunately completion is a monster feature. It involves shell functions or perhaps even scripts being called and somewhere in that process possibly LANG is again set to a wrong value. If you have root privileges you can debug this shell script code). Good luck with the completion guide.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.