utf8格式源代码中的字符串,默认都会当作char来处理,除非用L""符号来修饰
原先QString("mystrr"),现在都不认了,必须都要加上L才行
原先:m_conn->put_HttpProxyAuthMethod("Basic");
现在:m_conn->put_HttpProxyAuthMethod(L"Basic");
同理: handle = m_conn->openFile(UUU(strRemote) ,L"writeOnly",L"createTruncate"); 原因是库函数强求
前提:不使用VS2010开始的pragram指令
注意1: if (m_conn->ProxyType=="WEBPROXY") 倒是不必改。加上L反而错误。
原因是三个重载函数里,没有wchar_t*或者QChar*的比较:
bool operator==(QLatin1String other) const
bool operator==(const char * other) const
bool operator==(const QByteArray & other) const
注意2: InsertLog("debug", m_taskname, strAction, tr("try to reconnect again...")); 插入的日志没有问题,说明对标准英文字符自动转成Unicode没有问题。
原因是,编译器以char*读取"debug"字符,但是没关系,在调用函数的时候,会自动调用
QString(const char * str)
从而成功把它转化成了一个正确的QString。同时赏析一下所有构造函数:
QString()
QString(const QChar * unicode, int size = -)
QString(QChar ch)
QString(int size, QChar ch)
QString(QLatin1String str)
QString(const QString & other)
QString(QString && other)
QString(const char * str)
QString(const QByteArray & ba)
还是不明白,为什么
InsertLog(L"debug")
会编译通不过呢?
注意3: strRemote += "/dir.case"; 为什么这样写?加上L反而错误。
原因是9个重载函数里,没有wchar_t*或者QChar*的赋值(得注意,是QChar*,不是QChar):
QString & operator+=(const QString & other)
QString & operator+=(QChar ch)
QString & operator+=(const QStringRef & str)
QString & operator+=(QLatin1String str)
QString & operator+=(const char * str)
QString & operator+=(const QByteArray & ba)
QString & operator+=(char ch)
---------------------------------------------------------------------------------
理论解释:
Qt5假定的执行字符集是UTF8,不再允许用户擅自改动。这样一来,Qt4中setCodecXXX的各种副作用不再存在,而且中文问题更为简单。
QString s1 = "汉语";
QString s2("漢語");
QString s3 = tr("中文")
QString s4 = QStringLiteral("中文");//只要字符串不需要翻译,请关注这个
QString s5 = QString::fromWCharArray(L"中文");
QString s6 = u8"中文";//C++11
QString s7 = tr(u8"中文")
...
所有这些在Qt5默认都会正常工作,唯一要求就是:确保你的C++的执行字符集(the execution character set)是UTF-8
- 尽管 L"..."(wchar_t*) 在Windows下是UTF16,但是不具备跨平台性。
http://blog.csdn.net/dbzhang800/article/details/7542672
utf8格式源代码中的字符串,默认都会当作char来处理,除非用L""符号来修饰的更多相关文章
- 通过ABAP的标准功能,寻找源代码中的字符串
程序名称: *ABAP_SOURCE_SCAN 查找 作用:通过这个标准程序,可以在系统的源代码中进行字符串的查找!
- 【php正则】php正则匹配UTF-8格式的中文汉字 和 【,】【,】【。】等符号
1.php正则匹配UTF-8格式的中文汉字 和 [,][,][.]等符号 if (preg_match_all("/([\x{4e00}-\x{9fa5}]+((,)?)+((,)?)+(( ...
- 使用Microsoft Roslyn提取C#和VB.NET源代码中的字符串常量
Microsoft Roslyn是微软.NET“编译器即服务(Compiler as a Service)”的主要产品,它提供了开放的编译器API,并为源代码产生.分析和重构提供了新一代的语言对象模型 ...
- VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用
CSDN原博文:http://blog.csdn.net/houkai363/article/details/8134787 遇到了:不能将参数 1 从“const char [5]”转换为“LPCT ...
- VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用(简单明了)
一. 在字符串前加一个L作用: 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节. strlen("as ...
- 理解Java中的字符串类型
1.Java内置对字符串的支持: 所谓的内置支持,即不用像C语言通过char指针实现字符串类型,并且Java的字符串编码是符合Unicode编码标准,这也意味着不用像C++那样通过使用string和w ...
- 让TinyXML保存文件为UTF-8格式
TinyXML是个好东西,这个不用我多说了,我用它做过好几个项目,但这几个项目都只是从xml文件中获取信息,没有涉及到写文件,最近需要生成xml的配置文件,才注意到这个问题,那就是TinyXML似乎不 ...
- C语言中的字符串
字符串 字符串 用双引号引起来的多个字符. 在C语言中字符串是用’\0’结束的.即每个字符串的最后一个字符是’\0’,但是结束符不显示,仅仅标志该字符串到这儿就结束了. 二.声明字符串 char *s ...
- LoadRunner 如何将英文的字符串转换成UTF-8格式的字符串?
7.48 如何手动转换字符串编码 1.问题提出 如何将英文的字符串转换成UTF-8格式的字符串? 2.问题解答 可以使用lr_convert_string_encoding函数将字符串从一种编码手动 ...
随机推荐
- iOS设计模式——MVC(Model-View-Controller)
Modol View Controller(MVC)是一种最早的也是最成功的可重用的设计模式,70年代的时候首次在smaltalk编写的程序中成功使用.基于MVC设计 模式,Cocoa整体架构可以划分 ...
- linux下emacs安装
1.下载地址:http://ftp.gnu.org/pub/gnu/emacs/ 下载文件:emacs-24.2.tar.gz 步骤: 一.安装依赖文件: (先进入root:终端中输入 su -) ...
- ASP.NET MVC导入excel到数据库
MVC导入excel和webform其实没多大区别,以下为代码: 视图StationImport.cshtml的代码: @{ ViewBag.Title = "StationImport&q ...
- Navicat Premium 11.0.x(for Mac)激活方法
激活步骤: 1.将解压后的Navicat Premium.app放入Applications(应用目录),但一定不要打开它2.彻底断网3.将keygen.app复制到桌面->右键->Get ...
- 有关spring-servlet.xml 和 application.xml的配置信息讲解(这两个配置信息的区别在哪里)
在使用springmvc时需要配置得信息有两个,一个是spring-servlet.xml和applcation.xml: 首先两个文件的的存放位置就有一点的不同(见下图),application.x ...
- Java 网络编程(六) 使用无连接的数据报(UDP)进行通信
连接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952673.html 使用无连接的数据报(UDP)进行通信 什么是Datagram? 数 ...
- Strut2中的session和servlet中的session的区别
在jsp中,内通过内置对象 HttpServletRequest的getSession()方法可以获取到HttpSession,比如: <%@ page language="java& ...
- jQuery常用效果
1.滑动效果 向上效果:slideUp() 向下效果:slideDown() 向上与向下切换:slideToggle() 2.淡入淡出效果 显示与隐藏切换:fadeToggle() 3.显示隐藏 显示 ...
- ssma for oracle
SQL Server Migration Assistant (SSMA) for Oracle lets you quickly convert Oracle database schemas to ...
- Python一些字符串判断和转换
设s是字符串: s.isalnum() 判断所有字符都是数字或者字母 s.isalpha() 判断所有字符都是字母 s.isdigit() 判断所有字符都是数字 s.islower() ...