string类型的问题,请高手指教

哥本哈士奇 2006-04-11 03:34:21
在c++中如果是这样一个string a="中国";
那么它的长度就是4
但是在c#中这样一个语句下来长度就变成了2
而这么一来
原有程序有个判别是否为生僻字这一块
就出现了问题
因为处理过程是把其打到char[](比如“中国”就是四个元素)里然后取一个汉字的第一个字节转换成高字节判断再

取一个汉字的低字节进行判断
但是在c#中,打到char[],这样比如“中国”就是两个元素了,无从谈起怎么判别是否为生僻字了

请问是否有其它的解决方法
...全文
122 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jrl5365 2006-04-11
  • 打赏
  • 举报
回复
if(Encoding.Default.GetByteCount(strVal) != strVal.Length)
{
//包含双字节
}
yanro 2006-04-11
  • 打赏
  • 举报
回复
关注
lalac 2006-04-11
  • 打赏
  • 举报
回复
关注

http://Vip.ghry.cn/Qb/vip.htm?QQ=269269&id=400030888011
喜讯,腾迅为迎接到来的五一劳动节,现在开放六位 QQ 号码免费申请,数量有限,送完即止
Ivony 2006-04-11
  • 打赏
  • 举报
回复
C++中的char对应到C#里面的byte。
用Encoding.Default.GetBytes就能将string转换成byte[]
LMTZ 2006-04-11
  • 打赏
  • 举报
回复
错了,应该如下:

by[0].ToString("x")是中的高位,

by[2].ToString("x")是国的高位,
LMTZ 2006-04-11
  • 打赏
  • 举报
回复
返回来的by中包含4个字节,

by[0].ToString("x")是中的高位,

by[3].ToString("x")是国的高位,

哥本哈士奇 2006-04-11
  • 打赏
  • 举报
回复
有点接近了
我现在在想是如何能取到汉字的高字节和低字节
因为这好象是判断为生僻字所需要的条件
  • 打赏
  • 举报
回复
C#中char是两字节的吗?
如果是这样,那可以用一个Byte数组接收。
LMTZ 2006-04-11
  • 打赏
  • 举报
回复
string str = "中国";
Encoding encode = Encoding.GetEncoding("GB2312");
byte[] by = encode.GetBytes(str);
huangguangdou 2006-04-11
  • 打赏
  • 举报
回复
关注

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧