首页 › 月度存档 › 八月 2010

Python 转码问题的解决方法 异常: UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 30664-30665: illegal multibyte sequence

如,若要将某个String 对象s 从gbk 内码转换为UTF-8,可以如下 操作

s.decode(‘gbk‘).encode(‘utf-8′)

可是,在实际开发中,我发现,这种办法经常会出现异常: UnicodeDecodeError: ‘gbk‘ codec cant decode bytes in position 30664-30665: illegal multibyte sequence

这 是因为遇到了非法字符——尤其是在某些用C/C++编写的程序中,全角 空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这 些 字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正 的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。

这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整个字 符串——有时候,就是整篇文章——就都无法转码。

解决办法:

s.decode(‘gbk‘, ‘ignore’).encode(‘utf-8′) 因为decode 的函数原型是decode([encoding], [errors='strict']),可以用第二个参数控制错误处理的策略,默认 的参数就是strict,代表遇到非法字符时抛出异常;

如果设置为ignore,则会忽略非法字符; 如果设置为replace,则会用?取代非法字符; 如果设置为xmlcharrefreplace,则使用XML 的字符引用。

python 文档 decode( [encoding[, errors]]) Decodes the string using the codec registered for encoding. encoding defaults to the default string encoding. errors may be given to set a different error handling scheme. The default is ‘strict’, meaning that encoding errors raise UnicodeError. Other possible values are ‘ignore’, ‘replace’ and any other name registered via codecs.register_error, see section 4.8.1.

统计用户在线时间的一种解决办法

一直以来,在web开发中,准确统计用户在线时间都是一个老大难的问题,虽然已经有很多人去尝试各种不同的方案,可是毕竟项目不同,所用到的方法也是千差万别,下面列出几个比较常用的方法:

首先介绍一下所涉及的数据表结构,四个字段:

uid<int(10)> :用户id
session_id<varchar(40)>  :用户登录后系统产生的session_id,PHP可是使用session_id()函数获取
login_time<int(10)>  :登录时间
logout_time<int(10)> :登出时间

1. 客户端定时发送请求到服务器端。实现方法是在用户登录后,将uid,session_id,login_time插入一条记录,然后在客户端js设定一个计时器,比如每10分钟向服务器端发送一个请求,以此来达到更新登出时间的目的,当然这个间隔时间设定的越短,数据可能会越准确,不过相应的系统的负载也会越高,这个可以根据实际情况设定一个合适的值。这种方法广泛应用于webgame上,因为webgame的几乎所有请求都是ajax请求,不用刷新页面,一旦刷新页面,这个计时器就失去了价值,这也是这个方法的局限性。

2. 服务器设定一个定时轮询的脚本。这个方法是在服务器端写一个定时执行的脚本,比如5分钟执行一次,根据数据库中的记录来判断每个会话的session_id是否还存在于服务器上,如果存在就更新logout_time,不存在就跳过。这样也能比较准确的统计在线时间,不过缺点是需要有服务器的控制权,不然无法设定定时脚本,linux系统可以通过crontab实现,windows系统可以通过计划任务来完成。如果你只是买的虚拟主机,那么这个方法也同样不适合你。

3. 在用户每次活动时更新一下登出时间。这样在用户不活动或者退出的时候,登出时间就自然而然的存在于数据库里了,这也是本文着重讨论的方案。下面给出实现方法。

首先,在用户登录成功后,记录下其uid,session_id,并将现在时间作为登陆时间,现在时间+600s作为登出时间,插入数据库。

$uid = $_SESSION['uid'] = $info['id'];

$session_id = $_SESSION['session_id'] = session_id();

$login_time = time();

$logout_time = time()+600;

$sql = “INSERT INTO member_login (uid,session_id,login_time,logout_time) values($uid,’$session_id’,$login_time,$logout_time)”;

mysql_query($sql);

然后在用户每次活动,也就是每点击一个页面时,如果session存在也就是处于登录状态时,更新用户登出时间

if($_SESSION['uid']){

$uid = $_SESSION['uid'];

$session_id = $_SESSION['session_id'];

$logout_time = time()+600;

$sql = “UPDATE member_login SET logout_time=$logout_time WHERE uid=$uid AND session_id=’$session_id’”;

mysql_query($sql);

}

这种方法的优点是相对来说实现起来比较简单,能够适用于大多数的网站,没有额外的服务器需求,而且也可以比较准确的统计用户的在线时间。
缺点也很明显,增加了数据库的更新操作,增加了系统的负载,不过对于中小型网站来说应该不是问题。

Linux 中screen 中文乱码错位的解决办法教程

在/etc/screenrc
最后加入
defencoding gbk
encoding gbk gbk

重新启动screen–必须关闭所有的screen窗口    即可

Linux文件传送命令SCP(Secure Copy)使用详解

SCPSecure Copy

scp 命令是 SSH 中最方便有用的命令了,试想,在两台服务器之间直接传送文件,仅仅用 scp 一个命令就完全解决了。你可以在一台服务器上以 root 身份运行 #scp servername:/home/ftp/pub/file1 ./ 这样就把另一台服务器上的文件 /home/ftp/pub/file1 直接传到本机器的当前目录下,当然你也可以用 #scp /tmp/file2 servername:/boot 把本机上的文件 /tmp/file2 送到另一台机器的 /boot 目录下。而且整个传送过程仍然是用 SSH 加密的。

scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 。 与rcp 不同的是,scp 在需要进行验证时会要求你输入密码或口令。

最简单的应用实例

最简单的应用如下 :

scp 本地用户名@IP地址:文件名 1 远程用户名 @IP 地址 : 文件名 2

[ 本地用户名 @IP 地址:] 可以不输入 , 可能需要输入远程用户名所对应的密码 .

可能有用的几个参数 :

-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .

-C 使能压缩选项 .

-P 选择端口 . 注意 -p 已经被 rcp 使用 .

-4 强行使用 IPV4 地址 .

-6 强行使用 IPV6 地址 .

-r Recursively copy entire directories.

——

copy 本地的档案到远程的机器上

scp /etc/lilo.conf my@www.upsdn.net:/home/my

会将本地的 /etc/lilo.conf 这个档案 copy www.upsdn.net,使用者my 的家目录下。

=====================================================

例如:

copy 本地的档案到远程的机器上

scp /etc/lilo.conf k@net67.ee.oit.edu.tw:/home/k

会将本地的 /etc/lilo.conf 这个档案 copy net67.ee.oit.edu.tw,使用者 k 的家目录下。

copy远程机器上的档案到本地来

scp k@net67.ee.oit.edu.tw:/etc/lilo.conf /etc

会将 net67.ee.oitdu.tw /etc/lilo.conf 档案 copy 到本地的 /etc 目录下。

保持从来源 host 档案的属性

scp –p k@net67.ee.tw:/etc/lilo.conf /etc

在此必须注意使用者的权限是否可读取远程上的档案,若想知道更多关于 scp 的使用方法,可去看看 scp 的使用手册。

ssh-keygen

产生公开钥 (pulib key) 和私人钥 (private key),以保障 ssh 联机的安性, 当 ssh shd 服务器,会交换公开钥上,系统会检查 /etc/ssh_know_hosts 内储存的 key,如果找到客户端就用这个 key 产生一个随机产生的session key 传给服务器,两端都用这个 key 来继续完成 ssh 剩下来的阶段。

它会产生 identity.pubidentity 两个档案,私人钥存放于identity,公开钥 存放于 identity.pub 中,接下来使用 scp identity.pub copy 到远程机器的家目录下.ssh下的authorized_keys.ssh/authorized_keys(这个 authorized_keys 档案相当于协议的 rhosts 档案), 之后使用者能够不用密码去登入。RSA的认证绝对是比 rhosts 认证更来的安全可靠。

执行:

scp identity.pub k@linux1.ee.oit.edu.tw:.ssh/authorized_keys

若在使用 ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可从 net67.ee.oit.edu.tw 去登入 linux1.ee.oit.edu.tw。在此,这里输入的密码可以跟帐号的密码不同,也可以不输入密码。

微微族 ★☆ 博彩竞猜 ☆★ 插件【菠菜系统 】v2.0 发布(GB231、Utf-8两个版本)

请到 菠菜系统 官方板块 查看

http://www.vivizu.com/bbs/forum-24-1.html

安全警告:此网页包含的内容将不使用安全的HTTPS连接传送解决办法

在使用IE8访问某些论坛中带有图片的帖子时,总是会弹出一个警告对话框,提示说此网页包含的内容将不使用安全的HTTPS连接传送,可能危及到整个网页的安全,询问是否只查看安全传送的网页内容,每次只有选择“否”才能正常显示其中的图片,可以说是相当的麻烦……

其实,这只是IE默认的设置在发生作用,对于那些采用HTTPS协议的网站,如果网页包含经加密传送的HTTPS内容和未经加密传送的HTTP内容时,IE8就会弹出这样的提示信息,假如选择“否”,那么会有一些图片和内容无法显示。如果你确认该网站安全,那么可以按照下面的方法解决这一问题。

打开“Internet选项”对话框,切换到“安全”选项卡,单击“自定义级别”按钮,打开“安全设置/Internet区域”对话框,找到“其他”小节,将“显示混合内容”由默认的“提示”更改为“启用”(如图),确认并重启IE之后即可生效。

[PHP] – 压缩与解压Zip(PHPZip类)

PHPZip类来源:网络

visitFile()函数来源:http://topic.csdn.net/u/20071225/11/e6a8db84-df02-4622-987b-2a4ed4a5eef0.html (第14楼)

注:修改为可遍历子文件夹(替换遍历方法为visitFile());

添加GetZipComment()方法;

加上用法说明(注释部分)。 继续阅读 »

从多个地方加载同一个JavaScript库,避免加载问题造成内容出错

这个时代几乎没有几个网站不使用JavaScript了——即使的确有些网站提供了无脚本内容,绝大部分RIA还是需要有脚本支持才能使用的。
但是万一脚本在加载的过程中出问题了怎么办?
如果最基本的脚本库没能正常加载,那整个页面就没法看了。
对这种加载失败的问题,有一种比较容易使用的方法是判断加载的外部脚本是不是已经正常初始化,如果没有正常初始化则重新加载。
判断的方法一般是这样(以jQuery为例): 继续阅读 »

dota6.68下载 最新dota6.68中文版下载 dota6.68 ai版下载 dota6.68下载地址

跪求Dota6.68 AI版本地图下载 有的留下地址啊:

dota6.68下载 最新dota6.68中文版下载 dota6.68 ai版下载 dota6.68下载地址 [ 标签:dota6.68,ai,地址 ] dota6.68下载 最新dota6.68中文版下载 dota6.68 ai版下载 dota6.68下载地址  谁有这些下载地址??? 长江七号 回答:14 人气:2535 提问时间:2010-07-27 14:40 答案 下载:     一、从BP开始:Ban人方面EH ban掉了Pis的影魔  从BP开始:Ban人方面EH ban掉了Pis的影魔,Longdd的大那加,Dgc的谜团,最后一个兽王。这无疑是对CH核心三人的针对,其实也埋伏了一些自己的思路,后面会说。可能很多人刚开始看到这个阵容都觉得有些惊讶。这种阵容能打赢CH吗?就像水友发的那些贴一样。分开来看EH与CH的阵容在各个方面相比都要差一些。而战局却一边倒的打了个CH个狼狈不堪 直到结束CH才勉强拿到10个人头。我们慢慢来分析。 继续阅读 »

gmail 邮件中css无效style无效background image背景图片无效不显示的解决办法

gmail 邮件中css无效style无效background image背景图片无效不显示的解决办法

几乎每个会员制网站都需要通过后台发送邮件来与会员进行沟通,如注册确认、营销推广。这些由站方发给会员的信件,往往纯
文本格式已不能满足界面和交互的要 求,这时候我们就需要发送HTML页面。由于HTML邮件不是独立的HOST在本站的页面,是寄人篱下的。所以编写HTML邮件与编写HTML页面有很大 的不同。因为,各面向网民的主流邮箱都或多或少的会对它们接收到的HTML邮件在后台进行过滤。毫无疑问,JS代码是被严格过滤掉的,包括所有的事件监听 属性,如onclick、onmouseover,这是基于邮件安全性的考虑。不仅如此,CSS代码也会被部分过滤。本人要讲的就是如何编写不被各大主流 邮箱过滤的,能正常显示的HTML邮件。

gmail会自动过滤掉 head里的<style>设置的css,所以必须要把css写在html里面。

例如 <div style=”font-size:14px;”>

另外,gmail不支持在css里定义background里的image,包括background:url(”…”)和background-image:url(“..”)

解决办法是 在div的外面加上一层  <table>和<td>

并在<td>里加上background属性,例如

<table>

<tr>

<td  background=”http://www.vivizu.com/test.jpg”>

<div>test</div>

</td>

</tr>

</table>

呵呵 ,就可以看到背景图片了