| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:求:判断一个字符串(单词或者词组)是英文,还是中文的函数?
只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册: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: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册: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: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1731
专家分:3324
注 册:2012-2-29
收藏
得分:0 
回复 2楼 cssnet
好!
2022-11-07 06:01
快速回复:求:判断一个字符串(单词或者词组)是英文,还是中文的函数?
数据加载中...
 
   



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

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