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函数将字符串从一种编码手动 ...
随机推荐
- [每日一题] 11gOCP 1z0-052 :2013-09-17 DRA--Data Recovery Advisor.............................B31
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11818529 正确答案:AD 数据库恢复顾问(DRA)是一个诊断和修复数据库问题的工具.共 ...
- iOS中菊花。。。
其实系统的菊花除了功能有点单一,不具有刷新页面的功能以外,其他都还好吧,满足你一些正常的提示功能还是绰绰有余的:直接把项目里面的代码粘出来吧,其实也没有什么特别要注意的地方,一些设置属性也算留个备份 ...
- 关于webroot与web-inf
struts.xml中配置redirect重定向路径的问题,要把转发的页面放到WebRoot下才能访问到,要是放在WEB-INF下面就访问不到.
- linux 虚拟文件系统----------Virtual File System VFSkky
在了解虚拟文件系统之前,必须先知道什么是 Kernal Space 与 User Space. Kernal Space 与User Space 的差别,在于内存使用上安全机制的差异. kerna ...
- Winform获取当前程序名称或路径
以下几种方法获取当前程序名称或路径: // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. // 获 ...
- 几个linux 下C/C++集成开发环境推荐
链接地址:http://www.lupaworld.com/article-210675-1.html 摘要: 一.AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件, ...
- C#数据库——用多线程来组合一个SQL语句
StringBuffer sql = new StringBuffer();或(StringBuilder sql = new StringBuilder ()) sql.Append("s ...
- 0527 python 基础01
折行的处理 \>>> print "hi \... hello Lucy!"hi hello Lucy! 自然字符串,字符串加上r或R前缀指定>>&g ...
- Tomcat 中会话超时的相关配置
QC同事提到似乎有时Tomcat的会话超时表现有问题,记录一下可能用到的配置. 1)超时时间的设定 tomcat的会话超时可以在多个级别上设置:tomcat实例级别.Web应用级别.s ...
- Android 实现简单天气应用
引导页面,多个城市的天气,可以通过滑动来翻阅. 先看下截图: 1.城市天气界面 2.引导界面 应用引导页面 package org.qxj.iweather.page; import org.qxj. ...