unicode中含有双码元字符串的截取
来源:互联网 发布:unity保卫萝卜源码 编辑:程序博客网 时间:2024/05/18 22:15
在汉字中,某部分字占了双位,即unicode中占了两个码元(code unit),这种字在输出它的长度时,都是为2,因为在csdn里这种字一旦出现,后面的文章自动截断,所以没办法写明,但这些字可以在下面网站中复制
http://www.scarfboy.com/coding/unicode-tool?s=U%2b279FF
大家可以看到比较多,而这时如果我们对其字符进行substring的话,会弹出:无法将位于索引 0处的 Unicode 字符 \uD85E 转换为指定的代码页
这个问题因为需要处理复杂的繁体才会可能需要,我以前从来没有碰到过,论坛上就有人问了这个问题,百度上找不到,于是自己研究了一下:
Char[] cc = "从上面网站上copy一个字进来".ToCharArray(); Response.Write(cc.Length); Char[] cc1 = "我".ToCharArray(); Response.Write(cc1.Length + "|" + "从上面网站上copy一个字进来".Length); //Label1.Text = "从上面网站上copy一个字进来".Substring(0,1);//出错结果里可以看到,这个字的length竟是2,没研究过组合字的飘过。
直接response.write输出substring截断没有问题,但成了另一个字,label.text加载则直接报错,但这个字确实是存在的,我们要怎么进行截断呢,研究了下,可以用下面的方法stringinfo.LengthInTextElements。
public static string Substring(int subLen, string Words) { string temp = string.Empty; StringInfo si = new StringInfo(Words); int max = si.LengthInTextElements; if (si.LengthInTextElements >= subLen) { string returnstr = string.Empty; Char[] cc = Words.ToCharArray(); max = subLen; for (int i = 0; i < max; i++) { if ((i + 1) < cc.Length) { StringInfo si2 = new StringInfo(cc[i].ToString() + cc[i + 1].ToString()); if (si2.LengthInTextElements == 1) { i++; max++; temp += si2.String.ToString(); } else { temp += cc[i].ToString(); } } else { temp += cc[i].ToString(); } } } else return Words; return temp; }
0 0
- unicode中含有双码元字符串的截取
- 含有中英文的字符串截取
- 含有中文字符串的截取问题!
- java截取含有汉字的字符串
- PHP 截取含有HTML的字符串
- 含有中文的字符串截取类
- java 将字符串中含有unicode 转成中文
- 按字节截取含有中文汉字的字符串
- 按字节截取含有中文汉字的字符串
- 按字节截取含有中文汉字的字符串
- 按字节截取含有中文汉字的字符串
- 截取含有中文、Emoji表情、特殊符号的字符串
- 将含有unicode编码的字符串转换成中文
- Java中字符串的截取
- shell中字符串的截取
- SHELL中字符串的截取
- java中字符串的截取
- jsp中字符串的截取
- Linux中断基础构架
- 整数划分问题
- 传染病控制
- 半年小结201405 技术的态度
- 前资深苹果设计师谈「苹果设计」的神话:Jobs 的热情让每个人都害怕
- unicode中含有双码元字符串的截取
- ORA-01017 invalid username/password; logon denied
- nested exception is org.hibernate.exception.SQLGrammarException: could not get next sequence value
- 笔试面试中基础知识点总结概要篇
- 通过JNDI从服务器容器中获取资源_Spring JNDI+Mysql+Tomcat
- 专题开发十二:JEECG微云快速开发平台-基础用户权限
- 使用Zipalign优化Android apk应用程序
- css控制div的显示和div的显示位置和式样的代码
- [OPENCV] Learning Notes