處理nook上亂碼的Epub中文電子書

2021-06-28 15:07:05 字數 2418 閱讀 8975

nook ****** touch是android系統,自帶中文,可惜很多epub格式的電子書沒有使用nook自帶的中文字庫,導致中文亂碼。

改變的方式:

1 root ,再新增常見的中文字庫;

2 修改epub格式,把常見閱讀器上的字型檔的位置都加上;特別是可在nook的記憶體上加上其他字型檔。

**沒有優化,很亂,功能實現了。

#encoding= utf-8

import glob

import os

import sys

import zipfile

import os.path

import shutil

ss_to="""@font-face

"""ss_to_body = """

body

"""def processcss(fname):

f1 = open(fname,"r")

fname2 = os.path.join(os.path.dirname(fname),"new_"+ os.path.basename(fname) )

fname2 = os.path.normpath(fname2)

print u"老的css檔案:",fname

print u"新的css檔案",fname2

f2 = open(fname2,"w")

contents = f1.read()

if "@font-face" in contents:

start = contents.index("src:url")

end = contents.find("}", start +1 )

conts = contents[:start]+ss_to_2 + contents[(end +1):]

f2.write(conts)

print "modify font_face successfully"

else:

f2.write(ss_to)

f2.write(ss_to_2)

f2.write(ss_to_body)

f2.write(contents)

print "add font_face successfully"

f1.close()

f2.close()

os.remove(fname)

os.rename(fname2, fname)

print u"離開css檔案處理"

print ""

def processepub(oldfile):

z = zipfile.zipfile(oldfile,'a')

filecss = filter(lambda x:x.endswith("css"), z.namelist())

print filecss

for fi in filecss:

if "url(res:///system/fonts/droidsansfallback.ttf" in z.open(fi).read():

print "already show chinese ok"

return

workdir = oldfile[:-5] #".epub" 5 char

z.extractall(workdir)

print u"工作目錄:",workdir

css2 = map(lambda x:os.path.normpath(os.path.join(workdir, x)), filecss)

printit(css2)

map(processcss, css2)

newfile = os.path.join( os.path.dirname(oldfile),"nook_" + os.path.basename(oldfile))

print u"建立目標檔案", newfile

zz = zipfile.zipfile( newfile,"w",zipfile.zip_deflated )

#write to a new zip

pwd=os.getcwd()

os.chdir(workdir)

print u"當前目錄", os.getcwd();

map(lambda x: zz.write(x),z.namelist() )

print u"關閉目標檔案"

zz.close()

os.chdir(pwd)

shutil.rmtree(workdir)

def printit(x):

print x

if __name__ == "__main__":

ll = sys.argv[1:]

#print ll

map(processepub, ll)

sqlite中亂碼處理

最近在專案開發中使用到sqlite資料庫,其中遇到這樣乙個問題,中文,英文顯示正常,但一些特殊的字元顯示亂碼,比如 其實歸根結底還是字元編碼的問題,先前沒用utf8編碼。下面來看看兩種做法的異同。一 非utf8編碼 把sql語句儲存在tchar格式 然後sql執行時,使用assicc編碼。這樣讀取出...

web中中文亂碼的處理

在計算機中,只有二進位制的資料,不同字元對應二進位制的規則,就是字元的編碼。常用字符集 ascii碼 iso8859 1碼 gb2312和gbk unicode utf 8 出現亂碼的解決方案 1 以post方法提交的資料中有中文字元,可以在獲取請求引數值之前,呼叫request.setcharac...

處理request中的亂碼問題

1 首先在web.xml中新增如下 context param param name encode param name param value utf 8 param value context param filter filter name encodingfilter filter name...