将任意 unicode 写入文件

Writing arbitrary unicode to file

我一直在尝试将任意字符(实际上是任何类型的字符)输出到生成的文件中。考虑下面的起始代码(可能会写得更好,但只是想现在就开始工作)。

from random import randint

def alphanumrand(n):
    bounds = ['1','2','3','4','5','6','7','8','9',
    'A','B','C','D','E','F']

    string_buffer = ''
    for index in range(0,n):
        string_buffer += bounds[randint(0,14)]
    return string_buffer

if __name__ == '__main__':
    print alphanumrand(2097152).decode('hex')

效果很好;采用以下示例输出:

Öõ╔i§g┬Ø}>#àæƒÒ1È/-Q|Ð┬Ô/µåQàà¡#ÎKnÚ4+▀Ö▲↔u│öCü╗§íJ
uX▒ý┘w©╔SĹ4)&Cié▓B↔↑rÏ×2O>↔gªE]±Ñ∟"N4←$¹ÖM═┤#R┴¼-Ä
Ûý(v:ÈRC┘ F┌èGB/©↔╦mCØ*ƒ[ýw┼J*=T‼å╩]ñuö¶╗^[╬┼î3Ñê²H
7:┬┴)r∟¬9ôEw±\┐§↕¿fºXã¯H$<)tÆ3?äAʃ←+>®ÌË■㤫▀╣|▬▬↕
ý¬sÚ╩ØAèX¢È¦I▄<ÿ°ı↨h8º+½ù²$←yezj9}7ËÀ»5/;·Á┼¾ÕúÒÛ┘┤
U╔¸Þ■;↔²%∟╩═Þ┤Æ◄ó¶Öl=Ñ▒Ú╝ü~wïåbzå*À¼~/╬‗BÀ´®£ }▒ïÚ 
∟ma§ã"_5┼═║Ñx3y"§U/‼]Gß.X}wií◄┴ñj¬a÷I?7·⌂àc?wÌZsZv←
├2ûuB║®_ Ï╚S▼[¬ò↨E§Inz$HàU²Ê╗kż½·┐mxYÑ╔çäÔ!b·åÒ∟-
bf".«M'T\ø_Ø×edaâK®Æ┤¹═╗─õãË¡◄┬¤©?Ð→ª▀jÂîQ┐9ʃ=┘3Ý↑
À┬ÙU§ou~Ë╩c╠,¢ú}╣À<>┤→u╚Qõ▄╬dê÷jħOr→·º↓rÀ╔B¦3°L¬±Ý
H╦▓à?┤;è┴X↕½‗▒o¼¤;³÷Cz·ü_RYùâ├UÍLØz²ÌçZ²¬i$ÞÛÈ"║âj
"¿┴¹¼¾%(K┘|║éBZ\ëÔ%◄▲‗¶D■?c鳤&±êÊ«v⌂qªG}of┼÷ѳM!-Ù
gÆ╩╝2qR|¿å÷ÙÂ‗¾|ï∟¶▀eå¦~AXKß4⌂▀═mýzæ²ÿ↕▒%ìÐMÒÅmS!¥§
+G▼╠↨v■↓xËMÐÞoÅA¿ëu╬╩─®t$ºrK{t¿üÑ5¸→é%ûn¿Ý©í▒1#┘▓4┴
E©¸╩↕vq6¯k┼CQ╝xû╝╣/%Ô4║ÈÌe¢¹è]‼{q ƒºÛ←óÔ ■ÿ.Å▲↕3'¬ı

除非我找不到任何合法的方式将其输出到文件,无论是 utf-8 还是与此相关的任何其他编解码器。

以下 UnicodeDecodeError 异常消息也可能有用。

UnicodeDecodeError: 'utf16' codec can't decode bytes in position 104-105: illegal UTF-16 surrogate

UnicodeDecodeError: 'utf8' codec can't decode byte 0xfc in position 1: invalid start byte

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 0: ordinal not in range(128)

如果你现在还没有注意到;我不喜欢 unicode,应该多研究一下。

N.B - 使用 Python 2.7

您无需指定任何编码,只需指定File.write(alphanumrand(2097152).decode('hex'))。这将写入您生成的字节。

这对我有用:

if __name__ == '__main__':
    print 'Writing...'
    with open('test.txt','w') as f:
        f.write(alphanumrand(2097152).decode('hex'))

    print 'Done'

    with open('test.txt') as f:
        print repr(f.read())