编码utf-8无法识别文本

时间:2014-08-07 08:26:13

标签: encoding utf-8 terminal

终端:在最新的Ubuntu LiveCD上的xterm屏幕。

������.avi

在我尝试ls目录时,我看到了这一点:a

ls -la给我这个:b

MidNight Commander告诉我:c

$ 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

1 个答案:

答案 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。