如何剔除畸变的字符?

如何剔除畸变的字符?

如题
调用系统grep返回值赋给$a,如果$a="哈哈哈哈?"
?是一个畸变的字符,如果printf "\"$a\"";就可能打印出 "哈哈哈哈
而不是"哈哈哈哈"

谢谢

RT就行了
没看懂你要干什么
那个所谓的qibian字符是^M吧。(CR, chr(13), 0x0d)
先把被grep的源文件 dos2unix 一下。


QUOTE:
原帖由 odacharlee 于 2008-8-28 01:01 发表
那个所谓的qibian字符是^M吧。(CR, chr(13), 0x0d)
先把被grep的源文件 dos2unix 一下。

不是,比如一个汉子被截断一半,那个残存的半个字符
根据你的汉字编码做正则表达式匹配
比如汉字是gb2312的编码
就匹配
(
  [\xb0-\xf7][\xa0-\xfe]     # GB2312的一个汉字
  |                                     # 或
  [\x00-\x7f]                      # 一个普通的ASCII
)*                              # 任意多个

然后去掉末尾不匹配的部分就行了