我试图识别我正在使用的文件中找到的一个奇怪字符:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
该文件使用ISO-8859编码,无法转换为UTF-8:
$ iconv -f ISO-8859 -t UTF-8 file
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.
$ iconv -t UTF-8 file
iconv: illegal input sequence at position 0
$ file file
file: ISO-8859 text
我的主要问题是如何解释od
此处的输出?我正在尝试使用此页面,该页面可以让我在不同的字符表示形式之间进行翻译,但是它告诉我,005353
“十六进制代码点” 卓
似乎不正确,0aeb
而“十六进制代码点” ૫
又似乎是错误的。
所以,我怎么可以使用任何的三个选项(355
,005353
或0aeb
)来找出他们应该代表什么人物?
是的,我确实尝试过使用Unicode工具,但它似乎也不是有效的UTF字符:
$ uniprops $(cat file)
U+FFFD ‹�› \N{REPLACEMENT CHARACTER}
\pS \p{So}
All Any Assigned Common Zyyy So S Gr_Base Grapheme_Base Graph X_POSIX_Graph
GrBase Other_Symbol Print X_POSIX_Print Symbol Specials Unicode
如果我了解Unicode U + FFFD字符的描述,那么它根本不是真正的字符,而是损坏字符的占位符。因为文件实际上不是UTF-8编码的,所以这很有意义。
ë
当在另一个程序上使用数据时,我看到的是!但是我怎么知道呢?它不是在我提供的数据中的某个地方吗?你是怎样找到它的?哦,我尝试过iconv
,-f ISO-8859
但是它抱怨conversion from
ISO-8859不被支持。
eb
并忽略0x
十六进制指示符或其他内容。我对这种事情的无知是深刻的。您能否发布解释@StephenKitt的答案?
iconv
就可以成功了;和/或您可以在Wikipedia上查找它。对于这种非常特定的编码,fileformat.info / info / unicode / char / 00eb / index.htm也可以使用(Unicode相当于在128-255范围内的ISO-8859-1,尽管当然没有与之兼容的UTF编码) )。
iconv
抱怨是因为您没有指定源字符集,所以它使用的默认值可能是UTF-8。)