debian squeeze里面的GNOKII是0.6.29的。其中的mysql.c 在处理的时候没有考虑到多字符集的问题。
这样发短信下来中文字符都是乱码(中文文字是?,但是命令发短信行正确。)。
之前虽然有个patch 在 mysql_init (&mysqlIn);后面增加了 mysql_options(&mysqlIn,MYSQL_SET_CHARSET_NAME,"utf8"); 硬编码了链接编码(&mysqlOut)。虽然能解决问题。但是方法很dirty
通过阅读最新的0.6.31,的mysql.c 发现代码中增加了处理编码的部分。
但是我在测试的时候 0.6.31一直没法正常更新processed字段。总是update field failed。而且貌似问题很多
0.6.31 版本的 mysql.c修改比较大,debug比较花时间,就反其道行之,花了一点时间,对GNOKII 0.6.30做了一点修改。把0.6.31的-e选项backport到0.6.30稳定版。
现在我的0.6.30分支在可以使用-e指定mysql字符集。这样只要locale正确,基本上使用smsd发短信中文就不会有乱码(?号)了
项目地址 http://gitcafe.com/ihipop/I-GNOKII 代码稍后会全部填充进去 包括一个守护进程和logwarning
编译指南
sudo apt-get install libglib2.0-dev intltool pkg-config libmysqlclient-dev libpq-dev libsqlite3-dev libusb-dev libical-dev libreadline-dev libpcsclite-dev
yum install glib2-devel intltool pkgconfig mysql-devel postgresql-devel sqlite-devel libusb-devel libical-devel readline-devel pcsc-lite-devel
1 |
libtoolize -c -f && glib-gettextize -f && intltoolize --force --copy --automake && aclocal -I m4 && autoheader -I m4 && automake --add-missing && autoconf && chmod +x ./configure |
smsd --help
smsd - version 1.4.5-p1 from gnokii 0.6.30
Copyright Jan DerfinakUsage: smsd [options]
-u, --user db_username OR action if -m file
-p, --password db_password
-d, --db db_name
-c, --host db_hostname OR spool directory if -m file
-s, --schema db_schema
-e, --encoding client_encoding(Patched by [email protected] 2012-04-18)
-m, --module db_module (pq, mysql, sqlite, file)
-l, --libdir path_to_db_module
-f, --logfile file
-t, --phone phone_number
-i, --interval polling_interval_for_incoming_sms's_in_seconds
-S, --maxsms number_of_sms's (only in dumb mode)
-b, --inbox memoryType
-0, --firstpos0
-v, --version
-h, --help