MFC多字节字符集环境下字符截取解决方法
来源:互联网 发布:上古卷轴rm捏脸数据 编辑:程序博客网 时间:2024/05/21 14:50
MFC多字节字符集环境下字符截取解决方法
多字节字符集
每个字符的编码宽度都不等,可以是一个或多个字节。 ASCII字符只占用一个字节。 对于中文,日文等象形字,由于其数量庞大,一个字节无法全部容纳。所以用两个字节来表示一个字符。多字节字符集环境下pdf输出汉字有时会出现乱码,当问题出在一行的最后一个汉字时,如何保证一个汉字截取完整就很重要。下面用两个方法来解决这个问题。
举例
多字节字符集环境下将编辑框的汉字,标点,英文等混合的一个段落,输出到pdf文档里,格式为每行30个(汉字、标点、英文均计一个)
- 两种方法(详见代码块示例)
代码块
方法一:判断每行非汉字个数
int eachline=60; //每行60 个字符int num=0; //非汉字个数CString strline; //每行输出的内容PDF *p=NULL; byte *buff=new [m_edit.GetLength()]; //m_edit为编辑框的成员变量memcpy(buff,m_edit.GetBuffer(),m_edit.GetLength()); //将编辑框内容复制到byte类型的数组bufffor(int i=0;i<m_edit.GetLength();i+=eachline){ temp+=eachline; for(int j=i;j<temp;j++) if(buff[j]<128) //为真即非汉字 num++; strline=m_edit.Mid(i,eachline); if(num%2) //一行中非汉字个数为奇数 { strline=m_edit.Mid(i,eachline-1); //保证汉字截取完整,不会乱码 } PDF_continue_text(p,strline); //输出到pdf文档}
方法二:判断每个字符是否为汉字
CString str=""; int num=0;for(int i=0;i<m_edit.GetLength();i++){ num++; if(m_edit[i]&0x80) //相与为真说明是汉字 { str+=m_edit[i]; str+=m_edit[i+1]; i++; } else str+=m_edit[i]; if(num==30) { PDF_continue_text(p,str); num=0; str=""; }}
注:以上方法有可能输出的文字有可能不会严格对齐,具体看使用pdf的何种字体。
阅读全文
0 0
- MFC多字节字符集环境下字符截取解决方法
- 多字节字符集截取中文字符串
- VS2013 MFC项目使用多字节字符集
- Unicode字符集和多字节字符关系
- 截取包含多字节字符的字符串
- ANSI字符,UNICODE,宽字符,窄字符,多字节字符集
- ANSI字符,UNICODE,宽字符,窄字符,多字节字符集
- ANSI字符,UNICODE,宽字符,窄字符,多字节字符集
- VS2005 宽字符 unicode字符集和多字节字符集
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- 多字节字符集下CString转char*
- MFC Unicode 和多字节字符集 (MBCS) 支持
- VS2005开发MFC使用多字节字符集引起主题问题
- UNICODE与多字节字符集等字符问题
- UNICODE与多字节字符集等字符问题
- 关于Visual Studio 2013 编译多字节字符集的解决方法
- Pycharm2017破解补丁使用方法
- hdu 1160 最长上升子序列 + 记录路径
- 论文笔记之Label-Free Supervision of Neural Networks with Physics and Domain Knowledge
- 练习4
- 在笔试过程中进行格式的输入输出问题
- MFC多字节字符集环境下字符截取解决方法
- 判断ip是否在线之linux下进程间通信(Unix domain socket)
- mint-ui swipe组件解析
- Redis数据类型--String(字符串)
- Node.js学习(3) 按模块实现业务
- CodeChef:Girl Friend and String Gift(dp)
- Linux安装Nodejs
- ubuntu16.04 安装opencv3.1(python环境,虚拟环境)
- python+Eclipse+pydev环境搭建