UTF8编码格式的中英文字符如何换行
2011-09-08 14:38
239 查看
UTF8编码格式下,1个中文字符占3个字节,1个英文字符占1个字节。
如果遇到一大堆中英文字符串混杂,如何换行呢,请看代码:
如果遇到一大堆中英文字符串混杂,如何换行呢,请看代码:
/* 功能:UTF8中英文字符换行 输入:szStr: 字符串 ncount:每行容纳的中文字符 输出:lineStr: 每一行字符 返回:无 */ static void philofly_break_line(char *szStr, int ncount, char **lineStr) { int nsum = 0; int ntotal = ncount*3; int i = 0; if(szStr == NULL || lineStr == NULL || *lineStr == NULL) return; if(strlen(szStr) < ntotal) { strcpy(*lineStr, szStr); return; } while( *szStr) { if( (*szStr) < 0)//chinese char { nsum += 3; szStr += 3; } else// 'a' to 'z' or 'A' to 'Z' or '0' to '9' { szStr++; nsum++; } if(nsum>=ntotal || (*szStr=='\0') ) { if( *szStr == '\0 ) { strncpy(lineStr[i], szStr-nsum, nsum);//last chars break; } if(nsum==ntotal) { strncpy(lineStr[i], szStr-nsum, ntotal); } else if(nsum > ntotal) { if(nsum%3 == 1)// more one digital or english char { strncpy(lineStr[i], szStr-nsum, ntotal-1); szStr -= 1; } else if(nsum%3 == 2)//more one chinese char { strncpy(lineStr[i], szStr-nsum, ntotal-3); szStr -= 3; } } } nsum = 0; i++; } }
相关文章推荐
- vim 文本 编码 gb2312 转换为 utf8 格式 回车与换行
- [转载] ASCII、UTF8、Uncicode编码下的中英文字符大小
- AFNetworking2.0参数默认编码格式是UTF8,如何指定参数编码格式为gb2312
- 如何判断一段字符的编码格式
- java如何将字符转换成‘16进制格式’的字符串编码
- 转载>>ASCII、UTF8、Uncicode编码下的中英文字符大小
- 在Windows的CMD中如何设置支持UTF8编码?
- C#将字符转换成utf8编码 GB321编码转换
- 如何使串行数据以字符格式显示(代替十六进制)
- 在ant编译的时候出现错误: 编码utf8的不可映射字符
- utf-8编码的中文字符在source in sight如何正常显示
- Python 爬虫编码格式问题 gb2312转换utf8
- 如何设置Eclipse工作空间的缺省字符编码
- 真正根据utf8编码的规律来进行截取的字符的函数,utf8版sub_str
- 如何判断文本文件的编码格式?
- Oracle如何修改编码格式
- xampp/wamp集成环境安装后,如何修改mysql的默认编码格式的方法整理
- 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
- vb 如何在Text文本框或Label里显示一个字符后自动换行
- javac编译错误: 编码UTF8/GBK的不可映射字符