QT:QString 字符串和中文字符编码
来源:互联网 发布:求100以内的素数算法 编辑:程序博客网 时间:2024/05/16 09:08
QString 字符串和中文字符编码
QT内部的编码方式 Unicode (utf-16)
linux平台默认使用:utf-8
windows平台默认使用:gbk2312/gbk/gbk18030
QString内部使用Unicode编码,使用双引号的字符串,通过转换构造函数,可以将utf-8编码字符转换为Unicode的使用,也可以正常显示utf-8编码的字符串。
早期的Qt4版本不会做这样的转换,那么显示中文将乱码,获取在Windows开发qt程序,一般使用gbk的编码,显示中文也将是乱码。
<tips>
VMware虚拟机共享与ubuntu共享文件夹:
【虚拟机】-【设置】-【选项】-【共享文件夹】-【添加】-新建目录file
ubuntu虚拟系统中vi终端下访问windows共享目录路径:
" /mnt/hgfs/... " /mnt/hgfs/file
【注】最好不要用中文路径,使用英文路径。
如果出现"乱码解决方案":
QTextCodec类可以实现将其他编码方式(gbk)转换成(Unicode)。
eg:
// "中文字符串" 直接使用将是乱码
QByteArray encodedString = "中文字符串";
// 构建编码器对象,参数为当前所使用的编码方式
QTextCodec *codec = QTextCodec::codecForName("GBK");
// 使用编码对象调用成员函数 toUnicode 完成转换后,就可正常显示
QString string = codec->toUnicode(encodedString);
/* 代码演示 */#include <QApplication>#include <QLabel>#include <QTextCodec>int main (int argc, char** argv) { // 创建一个Qt的应用程序对象 QApplication app (argc, argv); // 1) 构造编码对象 【目前ubuntu下vim的默认编码为utf-8】 QTextCodec* coder = QTextCodec::codecForName ("utf-8"); // 创建一个标签对象 // 2) 将要显示的字符串转换为Unicode编码 QLabel label (coder->toUnicode ("你好, Qt!")); // 显示标签对象 label.show (); // 让我的程序进入事件循环 return app.exec (); }
练习:
构建QPushButton按钮对象,按钮对象内容“按我”;
1)用vi编辑器写源代码,构建(6步),结果可以直接显示中文
2)将程序Button.cpp拷贝到Windows共享目录
共享目录创建方式参见刚才的<tips>
3)使用记事本打开,另存为,编码方式选择ANSI编码(中文GBK)
4)将ANSI编码方式的源代码拷贝回ubuntu替换原来的代码
5)再次make构建运行,结果将是乱码
6)设置编码对象(GBK),转换为Qt内部的Unicode编码,再次make,结果将正常的显示中文。
/** 练习代码 **/#include <QApplication>#include <QPushButton>#include <QTextCodec>int main (int argc, char** argv) { QApplication app (argc, argv); QTextCodec* coder = QTextCodec::codecForName ("GBK"); QPushButton button (coder->toUnicode ("按我")); button.show (); return app.exec ();}
- QT:QString 字符串和中文字符编码
- Qt中文编码和QString类Unicode编码转换
- Qt中文编码和QString类Unicode编码转换
- QT Qstring Qt中文编码和QString类Unicode编码转换
- qt如何使用QString读取和保存中文字符?
- QString和string互转中文字符
- QString和string互相转换中文字符
- QString和string互转中文字符
- QT QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化
- QT QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化
- QT QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化
- Qt学习: 如何显示中文,QString和string以及C风格字符串的转换
- Qt QString转Char*传送中文参数编码问题
- QString 字符编码
- 【Qt】QString,std::string,char中文字符互相转换
- QString中文编码
- QString 中文编码转换
- 【QT】GB2312编码的char * 字符串 转 QString
- 【C++学习笔记】vector和array
- leetcode 91
- 安卓请求后台中文乱码
- QT:Qt的背景与软件安装
- 蓝桥杯-9-3摩尔斯电码(java)
- QT:QString 字符串和中文字符编码
- 深入浅出递归思想
- ABAP字符对齐
- Vim插件之indentLine
- QT:信号和槽机制
- android网络编程关于Socket和http协议
- java四类八种基本数据类型
- 蓝桥杯-11-1实现strcmp函数(java)
- QT:容器窗口(父窗口)