QString::toLocal8Bit得听QTextCodec::codecForLocale的

这个函数用了这么久,到今天程序出错才发现这个问题。。。也就是说,必须设置
QTextCodec *codec = QTextCodec::codecForName("System");
toLocal8Bit才能转换成本地字符
http://doc.qt.io/qt-5/qstring.html#toLocal8Bit

如果系统Codec设置成UTF-8,那么toLocal8Bit转换立刻就乱套了。
但不知怎么才能系统Codec设置UTF-8,又不影响QString转换成本地字符?

时间: 2025-01-11 12:29:39

QString::toLocal8Bit得听QTextCodec::codecForLocale的的相关文章

Qt中 QString 和int, char等的“相互”转换,关键是QString.toLocal8Bit().data();

Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString::number(a, 10); // s == "63" QString t = QString::number(a, 16).toUpper(); // t == "3F" long a = 63; QString s = QString::number(a, 10);

QString够绕的

多读几篇,每篇取几句精华加深我对QString的理解. ------------------------------------------------------------------ QString内部仍采用UTF-16存储数据且不会改变,但它读char*的时候(C++语言里最常见的形式,特别对于const来说是这样),默认按照latin1来解读字符串,这就造成乱码. QString的成员函数知道按照何种编码来处理 C 字符串QString QString::fromAscii ( con

QTextCodec::makeDecoder函数,plugins需要是动态链接库

QT中的QString内容使用Unicode作为文本编码.但是实际系统中通常采用的是其他编码,例如GBK,utf8等.为了便于兼容这些格式,QT中还设置了两个字符串类型: QCString类: C类型字符串,必须以0结尾,也就是中间不能含有0. 例如GBK编码的字符串 QByteArray类: 中间可以含有0.例如utf8编码的字符串 为了便于编码转换,QT还提供了一套具备扩展性的编码转换器: QTextCodec 这个类定义了编码转换器的接口,可以以插件方式继承这个类,实现各种编码转换器. 当

QString::QString 中文乱码

QString::QString 中文乱码 处理方法: 1. QString str = QString::fromLocal8Bit("中文"); // vs2008 vs2005 2. QString str = QString::fromLocal8Bit("中文"); //  gcc vs2003, 如源码是 GBK 编码(记事本中的 ANSI 编码) 3.QString str = QString::fromUtf8("中文");  

【转】QT QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化

//QString to wchar_t *: const wchar_t * encodedName = reinterpret_cast<const wchar_t *>(fileName.utf16()); //QString to char * given a file name: QByteArray fileName = QFile::encodeName(aFileName); const char * encodedName = fileName.constData(); //

QT开发(二十七)——QT常用类(一)

QT开发(二十七)--QT常用类(一) 一.QString 1.QString简介 QString提供了Unicode编码的字符串,使用隐式共享技术来节省内存和不必要的数据拷贝,不必考虑跨平台的兼容性. QString类成员函数中除了 ascii().latin1().utf8().local8Bit()函数,其他所有的函数都是可重入的. 2.QString成员函数 QString::QString ( const QChar * unicode, int size ) QString::QSt

Qt中文显示

QT默认的编码(unicode)是不能显示中文的,可能由于windows的默认编码的问题,windows默认使用(GBK/GB2312/GB18030),所以需要来更改QT程序的编码来解决中文显示的问题. QT中有专门的一个类来处理编码的问题(QTextCodec). 在QT3中,QApplication可以设置程序的默认编码,但是在QT4中已经没有了该成员函数.可以以下的这些方法来设置编码. 1. 设置QObject的成员函数tr()的编码. QTextCodec::setCodecForTr

Qt国际化(Q_DECLARE_TR_FUNCTIONS() 宏给非Qt类添加翻译支持,以前没见过QTextEncoder和QTextDecoder和QLibraryInfo::location()和QEvent::LanguageChange)

Internationalization with Qt 应用程序的国际化就是使得程序能在国际间可用而不仅仅是在本国可用的过程. Relevant Qt Classes andAPIs 以下的类支持Qt的国际化. QTextCodec QTextDecoder QTextEncoder QTranslator QLocale Languages and WritingSystems 有时,国际化是比较简单的,例如,把美国的应用程序让澳大利亚或英国的用户可访问,只需要简单的改变拼写.但是,把美国的

qt的udp的初步使用

该程序实现的功能是:局域网内,每个用户登录到聊天软件,则软件界面的右端可以显示在线用户列表,分别显示的是用户名,主机名,ip地址.软件左边那大块是聊天内容显示界面,这里局域网相当于qq中的qq群,即群聊.每个人可以在聊天输入界面中输入文字并发送.其聊天界面如下: 该程序实现的是每个用户登录既是客户端又是服务器端,这就需要看你站在哪个角度看问题了.简单的说,当用户发送信息给别人时就是客户端,当接收别人的信息是就可以看做是服务器端. 下面分服务器端和客户端2部分来介绍. 服务器端:建立一个UDP S