我用IsDBCSLeadByte来判断一个字节是不是头字节
可是不管是不是头字节,只要是汉字返回都是1
哪位知道这是怎么回事以下是我的测试代码
CString sc = "一二";
TCHAR doubleByte = sc.GetAt(1);
int isDoubleByte = IsDBCSLeadByte(doubled);isDoubleByte返回是1
应该返回0才对非常感谢您的回答
可是不管是不是头字节,只要是汉字返回都是1
哪位知道这是怎么回事以下是我的测试代码
CString sc = "一二";
TCHAR doubleByte = sc.GetAt(1);
int isDoubleByte = IsDBCSLeadByte(doubled);isDoubleByte返回是1
应该返回0才对非常感谢您的回答
“The IsDBCSLeadByte function uses the ANSI code page to determine whether a specified byte is potentially a lead byte — that is, the first byte of a two-byte character in a double-byte character set (DBCS). ”注意那个“potentially”。
换句话说,如果IsDBCSLeadByte说不是的,肯定不是,如果IsDBCSLeadByte说是的,有可能是。
sc.GetAt(1);参数是从0开始的,所以你返回的是第一个了
用那个函数就应该返回0
也就是说,汉字的前后两个字节构成的集合是有交集的。所以,还是那句话,要想用IsDBCSLeadByte做准确判断地话,你只能判断出不是的。
一语道破那哪位知道还有没有其他的可以解决中英文混合排版的方法
请赐教有没有现成的函数
于是,同时把这两个提取出来,作为一个汉字,然后从刚才第二个之后继续进行上面的过程。
如果不是因为multibyte处理这类问题比较麻烦,估计没人会愿意使用浪费空间较大的unicode编码。