标题:求:判断一个字符串(单词或者词组)是英文,还是中文的函数?
只看楼主
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
结帖率:100%
 问题点数:0 回复次数:2 
求:判断一个字符串(单词或者词组)是英文,还是中文的函数?
首先,有必要明确一点“基础知识”:

对于英语单词或者词组而言,ANSI和UTF-8,是一毛一样的,无任何区别的;
换句话说,对于英文字符串而言,UTF-8完全兼容ANSI。

而,对于中文单字、词或者词组而言,ANSI和UTF-8差异巨大,是完全不同的两种编码,二者不兼容;
一个显而易见的差别:一个UTF-8汉字,一般是3字节、4字节或更多,而ANSI汉字则固定是2字节。

而,至于Unicode LE和BE,则相对简单些,字符串当中有0x00,极有可能是英文,否则视作汉字,估计八九不离十了。

千万不要试图用IsAlpha()、IsUpper()、IsLower()去判断中英文,因VFP自带函数不支持UTF-8,基本上无意义。

综上,楼主的问题似乎有点儿“变质”了。
说——
如何判断一个UTF-8字符串(单词或者词组)是英文,还是中文?

--------------------
PS:其实,还有更复杂的情形。比方说,Merry-Xmas、Merry X'mas、Tom's brother……也是纯英文,即使扫描整个字符串时,遇到了“-、'和空格”等等非大小写字母的字符。
搜索更多相关主题的帖子: 判断 中文 英文 单词 字符串 
2022-11-06 16:04
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
问题甫一提出,楼主似乎自己就已找到了一个初始解决方案:

*------------
Function IsChsOrEng(cStr)
* cStr = "任何中、英文字符串"
if strconv(cStr, 11) == cStr  .or.  at(0h00, cStr) > 0
    return "English"
else
    return "中文"
endif
*------------

感觉是这么回事吧?不知是否已考虑周全?还有无遗漏?
(注:千万不要传递“以0h00结尾的C格式的字符数组”参数,来跟楼主抬扛。)


[此贴子已经被作者于2022-11-6 16:41编辑过]

2022-11-06 16:11
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
回复 2楼 cssnet
好!
2022-11-07 06:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510570-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047498 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved