转载自http://m.blog.csdn.net/blog/u011791262/25040271
一、几种编码的了解
参考博客http://blog.csdn.net/polarman/article/details/1593159
二、简单的认识下QByteArray、QString
QString的根本是QChar数组,但不以\0结尾,有大小 QChar的根本是ushor
QByteArray可以理解为Char型的动态数组,有大小,不是以\0结尾
三、了解QByteArray、QString、char 之间的转换
QString 转 char
QString str = "string";
char *ch ;
ch = str.toLocak8Bit().data();
QByteArray转char
char *ch;
QByteArray byte;
ch = byte.data();
四、了解QString与各编码之间的关系
QString本身是unicode编码,所以我们要将储存在char * 里的字符(可能是utf8或者是GB2312、latin-1)转化为QString,就要告诉
QString之间的编码方式是什么.有一下两种方法:
1、用QString自带的函数
QString fromAscii ( const char *str, int size = -1 )
QString fromLatin1 ( const char *str, int size = -1 )
QString fromLocal8Bit ( const char *str, int size = -1 )
QString fromUtf8 ( const char *str, int size = -1 )
2、用QTextCodec
QString QTextCodec::toUnicode ( const char * chars ) const
五、显示十六进制
1、QString QString::number ( int n, int base = 10 )
用法:QString::number(unidata[i].unicode(),16);
2、QByteArray toHex () const
例子:
utf8转unicode
这里打开文件只是当时调试用的,无关紧要.
void MessageForm::sendMessage()
{
QFile file(filename);
QTextCodec *codec = QTextCodec::codecForName("UTF8");
QString strout;
if ( file.open(QIODevice::WriteOnly) )
{
QTextStream ts(&file);
QString strdata = displayWindow->toPlainText();
QString unidata = codec->toUnicode(strdata.toUtf8().data());
for (int i=0; i
结果:
搜索
复制