判断utf8编码字符是否为日文或其它语言 - CSDN博客

文章推薦指數: 80 %
投票人數:10人

str is the UTF8 next character pointer */ /* chPtr is the int for the result */ { int byte; char *p;. /* HTML4.0 entities in decimal form, ... 判断utf8编码字符是否为日文或其它语言 coder马冬冬 于 2011-06-1322:56:00 发布 5900 收藏 分类专栏: C/C++ 文章标签: 语言 byte string iostream character html C/C++ 专栏收录该内容 13篇文章 0订阅 订阅专栏 //首先转成unicode编码,根据编码大小可获得为那种语言,编码表请参考另一篇博客    #include#include#include#includeusingnamespacestd; intutf82u(char*str,int*chPtr)   /*stristheUTF8nextcharacterpointer*/   /*chPtristheintfortheresult*/{   intbyte;   char*p;    /*HTML4.0entitiesindecimalform,e.g.Å*/   /*          orinhexadecimalform,e.g.水*/   byte=*((unsignedchar*)str);   if(byte=='&')   {       inti,n=0;        byte=*((unsignedchar*)(str+1));       if(byte=='#')       {           byte=*((unsignedchar*)(str+2));           if(byte=='x'||byte=='X')           {               for(i=3;i<8;i++)               {                   byte=*((unsignedchar*)(str+i));                   if(byte>='A'&&byte<='F')                       byte=byte-'A'+10;                   elseif(byte>='a'&&byte<='f')                       byte=byte-'a'+10;                   elseif(byte>='0'&&byte<='9')                       byte=byte-'0';                   else                       break;                       n=(n*16)+byte;               }           }           else           {           for(i=2;i<8;i++)           {               byte=*((unsignedchar*)(str+i));               if(byte>='0'&&byte<='9')                   n=(n*10)+(byte-'0');               else                   break;           }           }           if(byte==';')           {               *chPtr=(int)n;               return++i;           }       }       else       {           /*fixme*/           *chPtr=0;           return1;       }   }    /*    *   *Unroll1to3byteUTF-8sequences,uselooptohandlelongerones.    *      */    byte=*((unsignedchar*)str);    if(byte<0xC0)   {       /*        *       *HandlesproperlyformedUTF-8charactersbetween        *              *0x01and0x7F. Alsotreats/0andnakedtrail        *                     *bytes0x80to0xBFasvalidcharactersrepresenting        *                            *themselves.        *                                   */        *chPtr=(int)byte;       return1;   }   elseif(byte<0xE0)   {       if((str[1]&0xC0)==0x80)       {           /*            *      *Two-byte-characterlead-bytefollowed            *          *byatrail-byte.            *              */            *chPtr=(int)(((byte&0x1F)<<6)|(str[1]&0x3F));           return2;       }       /*        *       *Atwo-byte-characterlead-bytenotfollowedbytrail-byte        *              *representsitself.        *                     */        *chPtr=(int)byte;       return1;   }   elseif(byte<0xF0)   {       if(((str[1]&0xC0)==0x80)&&((str[2]&0xC0)==0x80))       {           /*            *      *Three-byte-characterleadbytefollowedby            *          *twotrailbytes.            *              */            *chPtr=(int)(((byte&0x0F)<<12)                   |((str[1]&0x3F)<<6)|(str[2]&0x3F));           return3;       }       /*        *       *Athree-byte-characterlead-bytenotfollowedby        *              *twotrail-bytesrepresentsitself.        *                     */        *chPtr=(int)byte;       return1;   }    *chPtr=(int)byte;   return1;}   voidUsage(stringapp){   cout<(name.c_str()),&unicode);   if(unicode>=0x3040&&unicode<=0x309F)       returntrue;   elseif(unicode>=0x30A0&&unicode<=0x30FF)       returntrue;   elseif(unicode>=0x31F0&&unicode<=0x31FF)       returntrue;   else       returnfalse;} intmain(intargc,char*argv[]){#if0   charstr[]={0xe8,0x87,0xba,0xe7,0x81,0xa3,0x00};   char*next=str;   intuni;   intlen;   inti;      for(i=0;*next;i++)   {       len=utf82u(next,&uni);       next+=len;       printf("%d--0x%x/n",len,uni);    }#endif   stringapp=argv[0];   if(argc<2)   {       Usage(app);   }      ifstreaminFile(argv[1]);   if(!inFile.good())   {       cout<(name.c_str()),&uni);       if(isJpan(name,uni))           cout<0000-007F:C0控制符及基本拉丁文(C0ControlandBasicLatin)
0080-00FF:C1控制符及拉丁文补充-1(C1ControlandLatin1Supplement)
0100-017F:拉丁文扩展-A(LatinExtended-A)
0180-024F:拉丁文扩展-B(LatinExtended-B)
0250-02AF:国际音标扩展(IPAExtensions)
02B0-0 golang如何识别不同语言 Haikuotiankong11111的博客 10-17 824 1.示例:golang识别希伯来文(hebrew) packagemain import( "fmt" "regexp" ) funcmain(){ english:="One,twothree!" text2:="Раз,дватри!" text3:="Jedna,dvatřičtyřipět!" hebrew:="חיים"//希伯来文 fmt.Println(get_words_from(english)) fmt.Println(g Ruby中关于日文转UTF-8及半角全角转换的技巧 【昆山人在上海】 05-25 1041 1.日文转UTF-8Iconv.new(cp932,utf-8)与Iconv.new(shift_jis,utf-8)的区别Iconv.new(shift_jis,utf-8)不支持以下的格式:課№001-18XXXXXXX 而只能把字符窜中的№换成No.才行但是Iconv.new(cp932,utf-8)支持. 2.半角全角转换 UTF8编码原理简介 LaineGates的专栏 09-01 1245 utf8支持的字符比较全,相应的,它就必须是变长编码。

它大致的原理如下:UTF-8编码范围 编码 编码表示的值U+000000-U+00007f 0xxxxxxx 0xxxxxxx U+000080-U+0007ff 110yyyxx 00000yyyxxxxxxxx U+000800-U+00ffff 1110yyyy UTF-8中文编码范围 热门推荐 u011494081的专栏 09-04 2万+ 网上一般给出的编码范围: UTF-8(Unicode) -u4e00-u9fa5(中文) -x3130-x318F(韩文) -xAC00-xD7A3(韩文) -u0800-u4e00(日文) 实际上发现: 除了u4e00-u9fa5(中文)之外,还有(0x3400,0x4DB5)也是。

GB18030在GB13000.1的20902个汉字的基础上增... php判断是否是日文,php正则判断中文韩文的编码的例子 weixin_34327800的博客 03-10 513 中文编码双字节字符编码范围:1.GBK(GB2312/GB18030)\x00-\xff→GBK双字节编码范围\x20-\x7f→ASCII取出非汉字的字符\xa1-\xff中文→gb2312取出所有中文(不包括字母数字和字符)\x80-\xff中文→gbk取出所有中文(不包括字母数字和字符)2.UTF-8(Unicode)\一-... (转)改Oracle字符集到utf-8,可以入中文,日文,其他字符 心似海 01-14 509 先check下現在oracle字符集 Checknls_parameter: Select*fromv$nls_parameters; checknls_database_parameters Select*fronnls_database_parameters; 1-改Regedit Start->Run->Rededit&lt... 如何判断字符串中含有日文字符 持续改进 04-24 1806 最近做的东西有这么一个需要:判断一个字符串中是否含有日文字符。

最直观的想法就是使用正则表达式,因此上网一搜,找到了这个utf-8对应的日文字符列表:http://ash.jp/code/unitbl21.htm。

满心欢喜,按照列表,用utf-16指定的区间,再用正则表达式方式写了一个判断方法。

测试了几个单词,正确。

不过测试了几个汉字,发现不对。

仔细看了看那个表,发现字母和假... mysql插入日语问题_关于mysql:PHP将utf8表中的日语字符串插入别的东西,但仍然可以成功读取... weixin_30974667的博客 02-28 127 为什么PHP将MySQL之类的字符存储在支持utf8的MySQL表中,但又成功地从MySQL读取的值作为原始字符串呢?例如。

$db=newmysqli("localhost","user","pwd","test");$sql="INSERTINTOtesttable(name)VALUES('ボーナスエリア');从工作台将其作为?????£??·??§??3插入表中我不知道编码/... “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页 coder马冬冬 CSDN认证博客专家 CSDN认证企业博客 码龄15年 暂无认证 48 原创 23万+ 周排名 164万+ 总排名 42万+ 访问 等级 2815 积分 32 粉丝 21 获赞 19 评论 67 收藏 私信 关注 热门文章 [awk]用-F指定多分隔符及正则表达式 130408 EmailAddresses 60989 c++vector中插入pair 28125 C++中的map嵌套应用 19582 sshlocalhost拒绝登录本地问题解决 18045 分类专栏 hadoop 2篇 生活杂记 1篇 bash 3篇 C/C++ 13篇 GREargumentexercise 1篇 GREissuepractice 3篇 python学习记录 3篇 程序员杂记 33篇 算法类 2篇 最新评论 [awk]用-F指定多分隔符及正则表达式 titer1: 3ks c++vector中插入pair pyai.top: 可以直接VP.push_back({10,50}); C++中的map嵌套应用 罗昌凯: 哎,博主,你那个输出的循环有问题把,要是按你那样的话,应该有16个输出吧,有重复的 C++中的map嵌套应用 罗昌凯: 谢谢博主,我找这个找了好久了,终于找到了,哈哈,万分感谢 [awk]用-F指定多分隔符及正则表达式 Loadingz: 斜杠都写反了吧 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 hadoop读写文件 vector排序去重反向输出 screen配置文件内容 2011年35篇 2010年42篇 目录 目录 分类专栏 hadoop 2篇 生活杂记 1篇 bash 3篇 C/C++ 13篇 GREargumentexercise 1篇 GREissuepractice 3篇 python学习记录 3篇 程序员杂记 33篇 算法类 2篇 目录 评论 被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?