免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: chrcc
打印 上一主题 下一主题

请教一个数据测试的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-03-28 13:59 |只看该作者

请教一个数据测试的问题

提供一个思路:
把每个汉字的编码参照这个范围判断:

如果在0x41~0x7a之间,为英文字符(包括标点符号)

如果是GB2312-80编码
编码范围是高位0xa1-0xfe,低位是 0xa1-0xfe
汉字范围为 0xb0a1 和 0xf7fe

如果是GBK编码
高位是0x81- 0xfe,低位是0x40 - 0xfe (不包括0x7f)

如果是UTF-8的话也一样,但是还没有查到汉字编码范围 :wink:
如果两个连续的字节不再这个范围,就应该能肯定不是汉字了吧

论坛徽章:
0
12 [报告]
发表于 2005-03-28 14:01 |只看该作者

请教一个数据测试的问题

hexdump是linux的命令?输出什么?

论坛徽章:
0
13 [报告]
发表于 2005-03-28 14:03 |只看该作者

请教一个数据测试的问题

man hexdump

DESCRIPTION
     The hexdump utility is a filter which displays the specified files, or
     the standard input, if no files are specified, in a user specified for-
     mat.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
14 [报告]
发表于 2005-03-28 14:16 |只看该作者

请教一个数据测试的问题

[quote]原帖由 "一梦如是"]hexdump是linux的命令?输出什么?[/quote 发表:


hexdump - ascii, decimal, hexadecimal, octal dump

论坛徽章:
0
15 [报告]
发表于 2005-03-28 15:54 |只看该作者

请教一个数据测试的问题

hexdump
这个是什么啊?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
16 [报告]
发表于 2005-03-28 16:07 |只看该作者

请教一个数据测试的问题

原帖由 "用钱的兜兜" 发表:
hexdump
这个是什么啊?

用linux的人都知道

论坛徽章:
0
17 [报告]
发表于 2005-03-30 09:56 |只看该作者

请教一个数据测试的问题

下面是针对 GB2312-80 的例子。 GBK  与此类似。 但 UTF-8 是变长字节表示法,
复杂很多, 有兴趣你就慢慢搞吧。



  1. # cat  1


  2. #!/bin/awk -f
  3. #
  4. # check the valid chinese name in Charset GB2312-80

  5. BEGIN {
  6.   MAX1=247
  7.   MIN1=176
  8.   MAX21=254
  9.   MAX22=249
  10.   MIN2=161
  11.   H=215
  12.   FS="\""
  13. }

  14. {
  15.   a=$4
  16.   FS=" "
  17.   cmd="echo "a" | od -A n -tu1"
  18.   cmd | getline
  19.   for ( i=1; i < NF; i+=2 ) {
  20.     j=i + 1
  21.     MAX2=MAX21
  22.     if( $i == H )
  23.       MAX2=MAX22

  24.     if ( $i > MAX1 || $i < MIN1 || $j > MAX2 || $j < MIN2 || length(a) < 4 ) {
  25.       print a "  is invalid name at line " NR
  26.       break
  27.     }
  28.   }
  29.   FS="\""
  30. }   
复制代码



  1. # cat data
  2. "32051210000110900","汪龙仙",51.6,"310225380501482"
  3. "32051210000110900","汪龙",51.6,"310225380501482"
  4. "32051210000110900","汪",51.6,"310225380501482"
  5. "32051210000110901","赵飞燕",51.7,"310225380501483"
  6. "32051210000110902","杨玉环",51.8,"310225380501484"
  7. "32051210000110900","罾?",51.9,"310225380501485"
复制代码



  1. # ./1  data

  2. 汪  is invalid name at line 3
  3. 罾?  is invalid name at line 6

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP