2009-12-30 96 views
2

我看到一個字符串在此代碼:我怎能逃脫 ' XFF XFE' 爲可讀的字符串

data[:2] == '\xff\xfe' 

我不知道是什麼 '\ XFF \ XFE' 是,

所以我想逃避它,但不成功

import cgi 
print cgi.escape('\xff\xfe')#print \xff\xfe 

我怎麼能得到它。

謝謝

回答

-2

您無法轉義或編碼無效字符串。

你應該明白,你與不是字節流還有一些你不能接受他們的角色,首先他們是0x00的工作 - 而且你的例子是發生在是一個BOM序列。

因此,如果您需要包含無效字符串字符(Unicode或ASCII),您將不得不停止使用字符串。

看看PEP-0358

+3

這將是,如果你解釋什麼是你特別「無效的字符串」的定義是什麼樣的「\ x00」或「「無效」 \一個非常好的主意XFF \ XFE」。你有沒有注意到OP似乎在使用Python 2.x而不是3.x,所以PEP-0358幾乎沒有什麼相關性? – 2010-01-01 03:39:13

+0

例如:您不能在C字符串中存儲0x00,因爲這是字符串終止符。在Unicode的情況下,有幾個其他代碼不允許存儲在裏面。 – sorin 2010-01-02 10:05:23

+1

您是否注意到OP使用Python而不是C?我再問一遍:「\ xff \ xfe」是什麼是無效的? – 2010-01-02 21:53:27

1
>>> print '\xff\xfe'.encode('string-escape') 
\xff\xfe 
2

之間是什麼「我不知道什麼是‘\ XFF \ XFE’是」和「所以我想逃避它」的連接? 「轉義」的目的是什麼?

這將有助於極大,如果你(之前和之後說幾句行)給多一點背景比data[:2] == '\xff\xfe' ...但它看起來像它正在測試是否data前兩個字節可能可能代表一個UTF-16 littleendian字節順序標記。在這種情況下,你可以這樣做:

UTF16_LE_BOM = "\xff\xfe" 

# much later 
if data[:2] == UTF16_LE_BOM: 
    do_something()