How to let vim listchar work under not utf8 environment?

Add the following line to your vimrc, preferably near the beginning:

scriptencoding utf-8

That will tell vim to read the file as UTF8 even if you're on a non-UTF system. It will then transcode any characters from that into your current encoding. If the characters you're using in the listchars option exist the other encodings that you use you shouldn't even need to have the conditional around that.