获取国际字符的UTF-8编码十六进制值

时间:2016-07-31 23:14:41

标签: python python-2.7 shell unicode utf-8

使用Mac OSX并且如果有一个用UTF-8编码的文件(包含ASCII以外的国际字符),想知道是否有任何工具或简单命令(例如在Python 2.7或shell中)我们可以用来查找相关的十六进制(base) -16)值(以字节流的形式)?例如,如果我将一些亚洲字符写入文件,我可以找到相关的十六进制值。

我目前的解决方案是打开文件并使用Python str逐字节读取它们。想知道是否有任何更简单的方法没有编码。 :)

编辑1 ,似乎od的输出不正确,

cat ~/Downloads/12
1

od ~/Downloads/12
0000000    000061
0000001

编辑2 ,同时尝试od -t x1个选项,

od -t x1 ~/Downloads/12
0000000    31
0000001
提前谢谢, 林

3 个答案:

答案 0 :(得分:2)

我不确定你想要什么,但是这个脚本可以帮助你查找任何字符的Unicode代码点和UTF-8字节序列。请务必将源保存为UTF-8。

# coding: utf8
s = u'我是美国人。'
for c in s:
    print c,'U+{:04X} {}'.format(ord(c),repr(c.encode('utf8')))

输出:

我 U+6211 '\xe6\x88\x91'
是 U+662F '\xe6\x98\xaf'
美 U+7F8E '\xe7\xbe\x8e'
国 U+56FD '\xe5\x9b\xbd'
人 U+4EBA '\xe4\xba\xba'
。 U+3002 '\xe3\x80\x82'

答案 1 :(得分:1)

od是正确的命令,但您需要指定一个可选参数-t x1

$ od -t x1 ~/Downloads/12
0000000 31
0000001

如果您不想查看文件偏移,请尝试添加-A none

$ od -A none -t x1 ~/Downloads/12
 31

此外,Linux手册页(但不是OS X手册页)列出了此示例:od -A x -t x1z -v,"显示hexdump格式输出。"

参考: http://www.unix.com/man-page/osx/1/od/

答案 2 :(得分:0)

您可以使用命令iconv在编码之间进行转换。基本命令是:

iconv -f from_encoding -t to_encoding inputfile

您可以使用

查看支持的编码列表
iconv --list

在你的情况下,

iconv -f UTF8 -t UCS-2 inputfile

您还要求查看十六进制值。执行此操作的标准实用程序是xxd。您可以将iconv的结果导入xxd,如下所示:

iconv -f UTF8 -t UCS-2 inputfile | xxd