汉字编码扩展难从简

有一段时间了,在整理从某知名网站获取的pdf文件的时候,感觉从里面复制内容中的文字显示有些奇怪。后来发现在win7下,这些文字直接不显示了,而是用□代替。

开始以为是字体的问题,使用通用的宋体字代替,但问题依旧。进一步研究,原来是字符集的问题,这些文字属于Unicode扩展编码中康熙字典的部首,共有214个,将这些文字的编码转换为常规的Unicode编码后问题解决了。

国庆期间在学习python的pdf转换text时,又遇到了麻烦转换出来的文字都是正常的,但是康熙字典的部首中的汉字一显示就显示两个同样的汉字,比如:青青、长长等。使用编码替换后大部分解决了,但仍有一些顽固的双胞胎字体存在。又到网上查询一些,原来这些字属于Unicode扩展编码中的中日韩兼容表意文字。

当年我逛英雄山文化市场的时候,进到每个书店,翻上几本书就知道这个书店的档次,其实主要翻看的是中国古籍,印刷质量是一个标准,里面那些异体字等不常见汉字是否错误也是决定出版社水平的标志。

想来这专业网站,为了保证电子文档的专业性,避免出现错字这样的低级错误,在字符集问题上也只能求繁不从简了。

 

又见虐菜大四喜

和四年前世界杯预选赛一样,杨旭一场比赛再进四球,只不过对手由不丹换成了关岛。
不变的是,杨旭依然是软解码中锋。
四年前是佩兰,四年后是里皮。不知道里皮是否像佩兰那样相信杨旭,如果那样,四年来,中国足球退步了,还是漂泊的杨旭保持了自身当然水准?
改打边锋的艾克森焦躁的表情已遮掩不住。可以了,如果不是身为中锋的杨旭脚下发软,他连下半场那个球也捞不着。
杨旭不可重用,这个坑里皮也会栽一次吗?

Python汉字字符编码转换

python下由于汉字分属不同unicode的区段,造成转换混乱,尤其是知网之类的pdf文件转换过程中。有时需要根据汉字来判断编码,然后再进行处理。

import json
s = ‘易易’
print(json.dumps(s))

这样可以得到不同的编码:”\u6613\uf9e0″。后一个属于中日韩统一表意文字。

同样

s =’\\u’+’f9e0′
ss = s.encode(‘utf-8’).decode(‘unicode_escape’)

这样可以得到编码对应的汉字。

弃儿firebird

那一次处理十万计数据的时候,第一次用到了firebird。因为有其他单位也需要那个程序,而access实在不堪用,而MySQL在Windows下跟Linux下的表现简直不像一个程序,所以选择了firebird的内嵌版,而那速度,堪称飞快。
很多年没有用firebird了,今天到网上看了一下,原先的中文网早已关闭,域名待售中。英文官网还不错,版本终于到了3.0版本,只不过相对于原先服务器版本还分classic和super,现在又加了一个superclassic。
firebird也算是出身名门,老东家Borland在90年代在编程软件领域一度压的微软喘不过气来。其前身是interbase,再往前寻祖还能和dbase沾上亲,而其兄弟delphi更是大名鼎鼎,当年其相关书籍在新华书店书架上阵势和现在的python相当。作为数据库,InterBase因为免费,一度受到各大财务软件的青睐,也因为性能优越,传奇私服的数据库也是用的它,所以我才可以熟门熟路地在老P的私人服务器上,给他打造了一身无上装备。
firebird是脱胎于InterBase的开源版本,但他的开源,说好听是是顺应潮流,说难听就是成了弃儿。Borland从顶峰崩坍式坠落后,其招牌delphi被一卖再卖,最后连名字都未能保住,何况已然落后数据库了。
互联网浪潮的到来,技术的剧变超出任何人的想象,无人能够阻挡,哪怕停留都会被吞没。

混迹IT最好的三年

上一次一下倒腾十万条数据已经是14年前了。
那时候算是IT人员,再加上领导支持甚至有些纵容,可以花费大量的时间专心做一些程序,自以为很有用的程序。虽然技术还很粗糙,但好在脑子清楚,思路开阔,总能找到一些解决办法。
现在看到外甥写程序的时候,时而挠头,时而击掌,想来就是我当年的模样。
那个几十万数据的满页帐系统,因为得不到原始数据,但通过发打印命令、kill进程、下载打印文件、分解文件导入数据库,虽然绕弯子笨了点,但在当时条件下也算完美解决了问题。
那三年应该是我技术进步最快,也是最有成就感的三年,也开始从原先c/s转向b/s。
但到了2008年,一切戛然而止。

数据“大”转移

前几日将前期整理的数据文件,分解导入MySQL数据库中。使用全文检索,速度满意,但准确度有很大缺憾。
又在网上搜索了相关资料后,准备将资料转入postgresql数据库中再测试一下。先将数据导出,导入费劲,导出35万条记录却只是看看进度条快闪的时间。
但导入到postgresql中时遇到了麻烦,其官方推荐的客户端死活不干活,估计是认出文件不是自家导出的。于是换上dbeaver,误打误撞间,一个界面下,在不同数据库连接中,选择对应的表,鼠标点击几下,数据记录瞬间移形换位。
一方面意外dbeaver深藏不露的高效,另一方面也不得不感慨,这30多万条记录,即便在2g内存的虚拟机下,对于数据库而言,也是不值一提。
只是开始。

安装测试zhparser

首先安装SCWS,网上说明有些问题,直接下载后解压,

./configure ; make install

下载zhparser源码:

git clone https://github.com/amutu/zhparser.git

然后编译的时候,因为Postgresql版本安装有点混乱,出现错误,直接安装相关库

sudo apt-get install postgresql-server-dev-all
sudo apt-get install postgresql-common

然后编译成功

make && make install

配置zhparser

CREATE EXTENSION zhparser;


CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);

ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

建立全文检索的索引

create index idx_gin_content on content using gin(to_tsvector(‘testzhcfg’,content));

通过建立了索引(gin)的全文检索搜索数据库记录

select * from content where to_tsvector(‘testzhcfg’,content) @@ to_tsquery(‘testzhcfg’,’艾灸’)

 

 

 

 

 

 

学然后重识书

昨晚上看屏幕左眼开始流泪,只好关了电脑。看儿子还在做作业,离睡觉给他点眼药水还有段时间。电脑手机看不了,便找本书看。
书架上的书基本转移的差不多了,剩下的计算机类书籍要么是用不着的,要么了了几本是看不懂的。
拿了一本数据分析的书,躺在沙发上随手翻翻打发时间。翻看几页,发现前面当初看不懂的章节内容,居然现在已经看懂了。继续翻看,感觉这本书被低估了,里面内容很有条理,章节设置也是按照从易到难的顺序逐步展开。只不过翻译的水平差一些,略显生硬。
书籍翻了一半,后面章节涉及的内容虽然又超出了我学习范畴,但兴奋的是,还能看懂这正是我近期想要应用的内容。
意外的好书,看来书总是有用的。

同人不同格

那晚和儿子闲聊也不是一无所获。
虽说江南在为《上海堡垒》道歉中,也嘀咕说那本书不是很畅销的,卖不出多少本。言外之意就是他的好作品有的是。
但我和儿子回忆了一下看过的作品,发现比较而言《龙族三》算是好的了。当然,这要是与《此间的少年》相比,那风格感觉简直不是一个作者写出来的。
作品判若两人之作的,不光小说,还有影视作品。
因为前几天电视里面在介绍管虎09年的电视剧《沂蒙》,便把话题又转到影视剧上。讨论到拍电影就要有拍电影的态度,比如管虎拍的电影《戏子厨子痞子》,虽然论剧情似乎是不正经,但无论导演还是演员在认真正经地拍和演。
但儿子睡着后,我突然想起,《鬼吹灯之黄皮子坟》,也是管虎拍的。

直接安装Postgresql11

昨晚把前段时间采集的数据库,通过python分解入mysql库,今天使用mysql的全文检索功能进行了一下测试,自然语言下效果已经非常满意。但后来看到网上评论,Postgresql下的无论自身还是通过插件,功能更为强大。

本来就是出于准备阶段,各种数据库都要尝试的,于是尝试安装Postgresql,Ubuntu下安装时候提示版本为10.

前几天记得看到新闻,Postgresql 12版本已经发布,即便不尝鲜,10版本还是有些有点旧了。于是修改apt的源,安装最新版本。

sudo apt-get install wget ca-certificates
wget –quiet -O – https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –

sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main” >> /etc/apt/sources.list.d/pgdg.list’

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

安装顺利完成,目前版本是11,应该足够测试使用了。