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...