Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

中英文在一起时,为什么把中文辨别为1个字节,中文是2个字节呀

qixiang  发表于:2011-02-17 15:03:34  
复制

中英文在一起时,为什么把中文辨别为1个字节,中文是2个字节呀,请老师帮我修改好以下数据库Query1里的

截左边22个字符字段和截左边22后面的字符字段的语句,让语句辨别为英文是1个字符串,中文为2个字符串,谢谢!

点击下载此附件

 

Top
sosopain 发表于:2011-02-17 23:48:39

你需要重新组织一下语言, 让你能明白你在问什么。

 

现在的vba系统字符都是用双字节表示的。

 

有个简单的办法判断字符是否为ansi标准字符

 

  if chr(ascb(str)) = str then

     是ansi标准字符

   else

    不是ansi标准字符

  end if



qixiang 发表于:2011-02-18 08:18:01

sosopain老师!

不好意思!我可能没说清楚,意思就是在附件有个数据库,在数据库的查询里有个《Query1》,《Query1》的《DSF》字段里的记录有中英文,按常规英文字母占一个字节,中文占2个字节,我想通过《截左边22个字符》字段计算前面22个字符,再想在《截左边22后面的字符》字段计算除掉前面22个字符留后面的数据。那样不知道有没有说清楚?

谢谢!!!



qixiang 发表于:2011-02-18 08:34:11

sosopain老师!

麻烦您下载附件看看可能更明白我的意思,谢谢!!!



sosopain 发表于:2011-02-18 09:20:55

在现在的access里面, 英文字母和中文都是一个字符, 两个字节。 你是要截取22个字符还是字节?



qixiang 发表于:2011-02-18 09:27:06

要截取22个字节



qixiang 发表于:2011-02-18 09:29:53
我可能把字节和字符理解成一个意思了。

sosopain 发表于:2011-02-18 10:35:17

恩, 所以你自己要先搞清楚你想问什么。。对于一个英文和中文占用几个字节这种问题, 没有“按常规”这种说法。。。每种语言和环境里面都有对这种情况都有非常详细的描述, 你查查帮助文件就一目了然了。



qixiang 发表于:2011-02-18 11:07:41

能帮我在附件里改改发给我吗?我很急,麻烦你了



qixiang 发表于:2011-02-18 11:16:01

我的意思是按22个字节计算,截取22个字节的数据。



sosopain 发表于:2011-02-18 11:21:48

没有搞懂你的问题阿.你是需要22个字节,把英文视为1个字节,中文视为2个字节?

 

如果是这样,  如果22刚好是在中文中间怎么处理?保留这个中文还是放弃这个中文?



qixiang 发表于:2011-02-18 11:30:21
放弃这个中文。

sosopain 发表于:2011-02-18 12:14:03

Public Function LeftGBB(ByVal str As String, ByVal num As Integer) As String

    If IsNull(str) Then
        LeftGBB = vbNullString
        Exit Function
    End If

    Dim strinfirst As String

    strinfirst = StrConv(LeftB(StrConv(str, vbFromUnicode), num), vbUnicode)

    '去掉尾部多余

    If Asc(Right(strinfirst, 1)) = 0 Then
        strfirst = Left(strinfirst, Len(strinfirst) - 1)
    End If

    LeftGBB = strinfirst

End Function



qixiang 发表于:2011-02-18 13:01:45

在查询里怎么做?



sosopain 发表于:2011-02-18 21:37:05

不是吧??看看帮助吧。。

把这个放在模块理,,用法就和left一样的了



qixiang 发表于:2011-02-19 08:05:58

我初学,又笨,请老师做个示范!

非常感激!!!



qixiang 发表于:2011-02-19 08:08:42

我想有很多人想看到结果,点击率非常高,麻烦您下载我附件里的数据库,在上面做个示范好吗?

谢谢老师了!!!



qixiang 发表于:2011-02-21 13:24:02
sosopain 发表于:2011-02-21 13:54:44
qixiang 发表于:2011-02-21 14:04:32
非常感谢sosopain老师!!!

总记录:19篇  页次:1/1 9 1 :