终端:在最新的Ubuntu LiveCD上的xterm屏幕。
������.avi
在我尝试ls
目录时,我看到了这一点:
ls -la
给我这个:
MidNight Commander告诉我:
$ ls
??? ???????.avi
$ env | grep -i LANG
LANG=en_US.UTF-8
$ export | grep -i LANG
declare -x LANG="en_US.UTF-8"
看起来这是UTF-16 surrogate,我是对的吗? [
en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates
我试图通过 python3 来欺骗它,我抓住了这样的例外:
for i in os.listdir('.'):
print (i)
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcc4' in
position 0: surrogates not allowed
我上传的文件是空身,只是标题 - 4.0K:https://mega.co.nz/#!roYUyQaB!AwOMDznj9DC_wSpAeWqjVj_Oqu2z8Kfk5VsSmFs0ybA
答案 0 :(得分:2)
$ echo $'\xc4\xf3\xf5 \xe2\xf0\xe5\xec\xe5\xed\xed' | chardet
<stdin>: MacCyrillic (confidence: 0.92)
$ echo $'\xc4\xf3\xf5 \xe2\xf0\xe5\xec\xe5\xed\xed' | enca -L ru
MS-Windows code page 1251
LF line terminators
$ echo $'\xc4\xf3\xf5 \xe2\xf0\xe5\xec\xe5\xed\xe8' | iconv -f 'Windows-1251'
Дух времени
因此您需要将终端设置为Windows-1251。