python3 unicode编码转换中文,python2.7 unicode编码转换中文

  python3 unicode编码转换中文,python2.7 unicode编码转换中文

  base92解码(python3实现base92 plus解码)的原因是由于python3的更新导致base92的原作者模块与python3不兼容。网上找了很多解决方案,都是为了找python3的相关base92模块。原作者写python2最新的base92模块已经是七年前的事了。而我又找不到一个兼容python3的,于是突发奇想,修改了原来的python2代码,重新打包成python3版本的base92包,仅供学习交流。

  项目地址下载地址维护由于此修改并非出于项目目的,仅用于学习交流和小程序,所以未发布到PyPi。如果你有新浪想用的朋友,需要去Github下载然后离线安装,所以不能用pip install。

  况且不打算在不影响常规使用的情况下做更多改进,发行项目需要使用的小伙伴可以支持原作者。

  安装方法:下载后找到py3base92_setup文件夹,在windows下打开,双击install.bat安装。或者进入目录然后运行python setup.py install在linux下安装。直接转到setup.py所在的目录,然后执行python setup.py install。安装完成后,用import py3base92语句导入模块测试。如果没有错误,安装成功。使用方法功能:

  b 92 encode()/encode()/base 92 _ encode()是等效的

  b92 decode()/decode()/base 92 _ decode()是等价的。

  示例代码:

  导入py3 base 92 print(py3 base 92 . encode( test ))print(py3 base 92 . b 92 encode( test ))print(py3 base 92 . base 92 _ encode( test ))print(py3 base 92 . decode( Jw _ @ V ))print(py3 base 92。b92 decode( jw _ @ v ))print(py3 base 92。base92 _ decode (jw _ @ v ))目前已知部分隐形字符和中文加密解码会产生问题,常规使用不会影响。

  Base92字母表:如下

  !#$%()* ,-./0123456789:=?@ abcdefghijklmnopqrstuvwxyz[\]_ abcdefghijklmnopqrstuvwxyz { }测试样本代码通过率字母视觉字符测试

  样本通过率100% (10,000次随机测试)

  # #样本通过率为100% if _ _ name _ _= _ _ main _ :import random sum=0 for I in range(10000):random=random . randint(0,92) strs= 。Join (random.sample ([), # , $ , % , , \ ,(,), * ,,,-,。,/,0,1,2,3,4,5,6,7,8,9,:,;,,=,,?,@,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,[,\\,],^,_,a,b,c,d, e , f , g , h , I , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , }],randoms))# print(type(strs))result=encode(strs)# print(result)result 2=base92 _ decode(result . replace( \ \ \ \ , \ \ \ \)# print(result 2)if strs==result 2:# print( pass

  样本通过率为8%(10000次随机测试)

  Python3主要面向str视觉字符,所以原测试样本通过率不高。

  #此样本通过率约为8% if _ _ name _ _= _ _ main _ :import doctest doctest . test mod()# #更多正确性测试import hash lib import random def gen _ bytes(s):return hash lib . sha 512(s)。digest()[:random.randint(1,64)]sum=0 for I in range(10000):s=gen _ bytes(str(random . random())。encode())if type(s)==type(b aa ):result=encode(s)# print(result)result 2=base 92 _ decode(result . replace( \ \ \ \ , \ \ )# print(result 2)if s!=result 2 . encode():# print( error )sum=1 else:result=encode(s)# print(result)result 2=base 92 _ decode(result . replace( \ \ \ \ , \ \ )# print(result 2)if s!=result 2:# print( error )sum=1 print(sum)测试结论。尽量避免bytes类型,str类型可以满足要求。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: