游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3961|回复: 10

如何截取一个中英混合的字符串才能不出现乱码?

[复制链接]

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
发表于 2006-8-26 19:28:00 | 显示全部楼层 |阅读模式
有一是中英文混合的字符串,现在我要截取该字符串内任意部分、任意长度的字符串,要求是不能出现乱码,不管截取结果。如:“a8db2测来哎呀” 如果我要截取最后3个字节的内容,要求截取到的是“哎呀”或者“呀”。这个能有好方法实现么?

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2006-8-26 19:59:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

最简单的是用Unicode。 转成Unicode。

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2006-8-26 20:15:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

谢谢答复,我去查下资料看看。

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-8-28 00:22:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

若一开始就没用Unicode,再改为Unicode的话则够你麻烦的,你要在程序中改动不少东西,若你当前项目刚刚开始的话,可以改用Unicode,否则还是另想办法。

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2006-8-28 00:35:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

CharNext/CharPrev ?

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2006-8-28 10:08:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

如果是ansi编码还好说-v-,只要前一byte<0就是双字节字符,否则为单字节。

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-8-28 10:20:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

单单是查找字符串strstr是不保险的,有可能汉字的后半段+某字符,可能其编码跟你要找的一样
通常要从头开始处理才能保证正确无误
遇到IsDBCByte就跳2个,否则是E文跳1个
一直到你要的那个字

在保证文本正常的情况下
可以以\n为单位优化处理

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2006-8-28 10:28:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

<mbstring.h>里面有些函数支持当前编码的多字节字符的,类似于string.h里面的方法,多以mbs开头的。

或者支持unicode的<wchar.h>也可以研究一下,要看你怎么实现了-v-

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2006-8-28 11:26:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

几天没来,没想到这么多朋友前来捧场。我现在已经开始修改了,准备全换成UNICODE的,虽然麻烦,不过也没得选择了,还好里面实际性的字符串并不多。操作绝大部分都是通过我包装了一层的,因此理论上修改也不会太麻烦。
现在的任务是装个英文版的系统来测试下。

11

主题

117

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
发表于 2006-8-28 15:31:00 | 显示全部楼层

Re:如何截取一个中英混合的字符串才能不出现乱码?

[♂樱♀] 说的方法才是王道,使用CharNextEx CharPrevEx可以处理任何编码格式的字符串。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 06:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表